[Jifty-commit] r1274 - in jifty/trunk: . doc/talks/npw.2006

jifty-commit at lists.jifty.org jifty-commit at lists.jifty.org
Tue Jun 13 07:59:10 EDT 2006


Author: jesse
Date: Tue Jun 13 07:58:30 2006
New Revision: 1274

Added:
   jifty/trunk/doc/talks/npw.2006/
   jifty/trunk/doc/talks/npw.2006/blog.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/canonicalize_entry.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_3_files.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_app.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_edit_model.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_model.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_schema_setup.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_server.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_web_1.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_web_crud.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_web_crud_create_2.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_web_crud_edit.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_web_crud_edited.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_web_crud_new.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/jifty_web_dbadmin.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/makefile_pl.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/new_entry.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/online_docs.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/tests.png   (contents, props changed)
   jifty/trunk/doc/talks/npw.2006/validate_entry.png   (contents, props changed)
Modified:
   jifty/trunk/   (props changed)
   jifty/trunk/doc/talks/npw.2006.xul
   jifty/trunk/doc/talks/takahashi.css

Log:
 r12550 at pinglin:  jesse | 2006-06-13 13:57:12 +0200
  * A more complete draft of my npw talk


Modified: jifty/trunk/doc/talks/npw.2006.xul
==============================================================================
--- jifty/trunk/doc/talks/npw.2006.xul	(original)
+++ jifty/trunk/doc/talks/npw.2006.xul	Tue Jun 13 07:58:30 2006
@@ -1,122 +1,98 @@
-Java
-Integration
-Framework
-Toolkit
-Yes, I'm kidding
-----
-Just Fucking Do It.
-----
-45min talk to people:
- - already web developers
- - preferably /not/ existing framework users
- - i.e. "Web 0.9b1" devs
-
-- Demo
- - To show the Blog thing working upfront before Code
- - the idea is to show the "polishedness" of vanilla jifty apps
-
-- Talk about each of the chunks of jifty
-- Model
- - rec
- - col
- - clsld
-- Actions!
- - 
-- View
- - 
-----
+<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="chrome://global/skin/" type="text/css"?><?xml-stylesheet href="takahashi.css" type="text/css"?><page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="presentation" xmlns:html="http:/www.w3.org/1999/xhtml" orient="vertical" onkeypress="Presentation.onKeyPress(event);">
+<html:textarea id="builtinCode" style="visibility: collapse">
 
-A few nifty things about jifty
+&#9832; Jifty
+----
+Jesse Vincent
+ 
+----
+ Java
+  
+  
+  
+                 
+----
+ Java
+ Integration
+  
+  
+                 
+----
+ Java
+ Integration
+ Framework
+  
+                 
+----
+ Java
+ Integration
+ Framework
+ Toolkit
+                 
+----
+ Java
+ Integration
+ Framework
+ Toolkit
+ Yes, I'm kidding
+----
+Jifty
+----
+JFDI
+----
+Let's 
+JFDI
 ----
-A Blog
 Demo
+App
 ----
-# jifty app --name Blog
-
-Creating new application Blog
-Creating directory lib
-Creating directory lib/Blog
-Creating directory bin
-Creating directory etc
-Creating directory doc
-Creating directory log
-Creating directory var
-Creating directory var/mason
-Creating directory share
-Creating directory share/po
-Creating directory share/web
-Creating directory share/web/templates
-Creating directory share/web/static
-Creating directory lib/Blog/Model
-Creating directory lib/Blog/Action
-Creating directory t
-Creating configuration file Blog/etc/config.yml
+Let's set
+it up
 ----
-
-Note: only three files
-
-bin/jifty
-etc/config.yml
-Makefile.PL
-
+{{img src="npw.2006/jifty_app.png" width="552" height="364"}}
 ----
-A blog has entries...
+Lots of
+directories
+---- 
+Three 
+files
+---- 
+{{img src="npw.2006/jifty_3_files.png" width="552" height="364"}}
 ----
-{{img src="new_entry.png" width="633" height="315"}}
-
+It runs!
 ----
-# cd Blog
+{{img src="npw.2006/jifty_app.png" width="552" height="364"}}
 ----
-# jifty model --name Entry
+(Not a very
+good blog)
 ----
-vi {{#i|./lib/Blog/Model/Entry.pm}}
+Good blogs 
+have entries
 ----
- package Blog::Model::Entry;
- use base qw/Blog::Record/;
+{{img src="npw.2006/jifty_model.png" width="552" height="364"}}
 ----
- package Blog::Model::Entry::Schema; # totally
- use Jifty::DBI::Schema;             # redundant
- 
- column title =>
-      type is 'text',
-      default is 'Untitled';
- 
- column body =>
-      type is 'text',
-      render_as 'Textarea';
+{{img src="npw.2006/jifty_edit_model.png" width="552" height="364"}}
 ----
-
-# jifty schema --setup
-
-INFO - Generating SQL for application Blog...
-INFO - Using Blog::Model::Entry
-INFO - Using Jifty::Model::Session
-INFO - Using Jifty::Model::Metadata
-INFO - Set up version v0.0.1, jifty version 0.605070
-
+{{img src="npw.2006/jifty_schema_setup.png" width="552" height="364"}}
 ----
-
-# jifty server
-
+{{img src="npw.2006/jifty_server.png" width="552" height="364"}}
 ----
-{{img src="welcome_pony.png" width="633" height="315"}}
-
-Screenshot: Welcome to your new Jifty application
-Click: Administration
-
+{{img src="npw.2006/jifty_web_1.png" width="800" height="622"}}
 ----
-{{img src="admin_console.png" width="633" height="315"}}
-
-Screenshot: Jifty Administrative Console
-Click: Entry
-
+{{img src="npw.2006/jifty_web_dbadmin.png" width="800" height="622"}}
 ----
-{{img src="admin_entry.png" width="633" height="315"}}
-Screenshot Manage records: Entry
-
+{{img src="npw.2006/jifty_web_crud_new.png" width="800" height="622"}}
+----
+{{img src="npw.2006/jifty_web_crud_edit.png" width="800" height="622"}}
+----
+{{img src="npw.2006/jifty_web_crud_create_2.png" width="800" height="622"}}
 ----
-{{img src="admin_add_entry.png" width="633" height="315"}}
-Screenshot Manage records: Create new Entry
+{{img src="npw.2006/jifty_web_crud_edited.png" width="800" height="622"}}
+----
+Nice
+----
+Not a
+weblog
 ----
 {{#i|./lib/Blog/Dispatcher.pm}}
 ----
@@ -124,7 +100,7 @@
  use Jifty::Dispatcher -base;
  
  before '*' => run {
-    my $top = Jifty->web->nav;
+    my $top = Jifty->web->navigation;
     $top->child('List Entries' => url => '/'); 
     $top->child('New Entry'    => url => '/new_entry');
  }
@@ -143,58 +119,38 @@
      );
  };
 ----
-{{img src="blog.png" width="633" height="315"}}
-# Here it shows already the entry created from admin console
-----
-{{#i|./web/templates/index.html}}
-----
- <%ARGS>
- $entries # From the dispatcher
- </%ARGS>
- <&|/_elements/wrapper&>
- % while (my $entry = $entries->next) {
-  <h2><% $entry->title %></h2>
-  <div class="body">
-    <% $entry->body %>
-  </div>
- % }
- </&>
-----
-{{img src="sorry.png" width="633" height="315"}}
-...clicking on "new entry" resulting in a helpful error page...
-----
 {{#i|./web/templates/new_entry}}
 ----
-{{img src="new-entry.png" width="623" height="405"}}
+{{img src="npw.2006/new_entry.png" width="707" height="476"}}
 ----
- <%ARGS>
+ &lt;%ARGS>
  $create # From the dispatcher
- </%ARGS>
- <&|/_elements/wrapper, 
-    title => 'Create an article' &>
- <% Jifty->web->form->start %>
+ &lt;/%ARGS>
+ &lt;&amp;|/_elements/wrapper, 
+    title => 'Create an article' &amp;>
+ &lt;% Jifty->web->form->start %>
  % foreach my $arg ($create->argument_names) {
- <% $create->form_field($arg) %>
+ &lt;% $create->form_field($arg) %>
  % }
- <% Jifty->web->form->submit( label => 'Save' ) %>
- <% Jifty->web->form->end %>
- </&>
+ &lt;% Jifty->web->form->submit( label => 'Save' ) %>
+ &lt;% Jifty->web->form->end %>
+ &lt;/&amp;>
 ----
- <%ARGS>
- $create # From the dispatcher
- </%ARGS>
- <&|/_elements/wrapper, 
-    title => 'Create an article' &>
- <&/_elements/form_action,
-    action => $create,
-    submit => 'Save' &>
- </&>
+{{#i|./web/templates/index.html}}
 ----
-{{img src="new-entry-filled.png" width="623" height="405"}}
-# Type in some stuff
+{{img src="npw.2006/blog.png" width="707" height="476"}}
 ----
-{{img src="new-entry-created.png" width="623" height="405"}}
-# the result screen
+ &lt;%ARGS>
+ $entries # From the dispatcher
+ &lt;/%ARGS>
+ &lt;&amp;|/_elements/wrapper&amp;>
+ % while (my $entry = $entries->next) {
+  &lt;h2>&lt;% $entry->title %>&lt;/h2>
+  &lt;div class="body">
+    &lt;% $entry->body %>
+  &lt;/div>
+ % }
+ &lt;/&amp;>
 ----
   Your files:
 
@@ -209,15 +165,22 @@
 ----
 Ship it
 ----
-Oh wait.
+Oh wait
+----
+(There's always 
+an "Oh wait")
+----
 I'm from the US
+----
 New law
 ----
-...banning profanity.
+...banning profanity
 ----
-We need to
-censor
-blogs.
+(We need to protect
+the children!)
+----
+So, we need to
+censor blogs
 ----
 No problem!
 ----
@@ -225,161 +188,186 @@
 ----
 Back to the code!
 ----
-We'll need to
-----
-Validate the text
-----
-(demo of validate)
-----
-# vi lib/Blog/Model/Entry.pm
+ # vi lib/Blog/Model/Entry.pm
 
-use Regexp::Common 'profanity_us';
+ use Regexp::Common 'profanity_us';
 
-sub validate_body {
+ sub validate_body {
     my $self = shift;
     my $body = shift;
     if ( $body =~ /$RE{profanity}/i) {
-        return $self->validation_error(
-            body => 'Would you speak like that in front of your mother? *cough*'
-        )
+        return (0, 
+        'Would you speak like that in front of your mother? *cough*')
     }
-    return $self->validation_ok('body');
-}
+    return (1, "OK");
+ }
 ----
-
-Demo of a validation error.
-
+{{img src="npw.2006/validate_entry.png" width="707" height="476"}}
 ----
-
-Not good enough.
+Not 
+good 
+enough
 ----
-
-It stops people from blogging.
-
+Stops people 
+from blogging
 ----
-
-Instead, we can
-clean it up directly
+Clean it up 
+directly
 ----
+ # vi lib/Blog/Model/Entry.pm
 
-# vi lib/Blog/Model/Entry.pm
-
-
-sub canonicalize_body {
+ sub canonicalize_body {
     my $self = shift;
     my $body = shift;
     $body =~ s/$RE{profanity}/**expletives**/gi;
     return $body;
-}
+ }
 
 ----
-Screenshot of canonicalization
-(Ideally a screencast of ajax validation)
+{{img src="npw.2006/canonicalize_entry.png" width="707" height="476"}}
+----
+(Autocompleters
+work the same)
 ----
-_now_ we
+{{#i|now}} we
 ship it
 ----
-The anatomy of a Jifty application
+{{#tag|Anatomy of a}}
+{{#tag|Jifty app}}
 ----
-Schema (Model)
+ {{#i|Schema (Model)}}
+ {{#i|Actions (Controller)}}
+ {{#i|Dispatcher (Kernel) }}
+ {{#i|ClassLoader (??)}}
+ {{#i|Continuations (??)}}
+ {{#i|Templates and Fragments (View)}}
+----
+{{#tag|Schema (Model)}}
 ----
 Jifty::DBI
 ----
-DatabaseObjects
+ {{#i|Data}}
+ {{#i|Model}}
+ {{#i|Management}}
+----
+No more...
+----
+CREATE FOREIGN KEY
+----
+CREATE TABLE
+----
+ALTER TABLE
+----
+{{#i|Object}}
+{{#i|Relational}}
+{{#i|Mapper}}
+----
+No more...
+----
+INSERT
+----
+UPDATE
 ----
-Pretty Syntax
+DELETE
+----
+Inside
+{{#i|Jifty::DBI}}
 ----
 Three object types
 ----
-Handles
+ - Handles
+ - Records
+ - Collections
 ----
-Database independence
+{{#i|Jifty::DBI::Handle}}
 ----
-- Postgres
-- SQLite
-- MySQL
-- Oracle
+Database 
+independence
 ----
-Records
+SQLite
 ----
-Track individual rows
+Postgres
 ----
-Cachable
-- Single process
-- Memcached
+MySQL
 ----
-Collections
+Oracle
 ----
-"SELECT main.* FROM ...."
+(Oracle's still a bit broken)
 ----
-- Joins
-- Paging
-- Cache records
+{{#i|Jifty::DBI::Record}}
 ----
-Does the hard stuff
+Records == 
+Database Rows
 ----
-Does the boring stuff
+{{#i|Declarative Syntax}}
 ----
-SCHEMA
+Remember
+our blog?
 ----
-No more:
-- CREATE TABLE
-- ALTER TABLE
-- CREATE FOREIGN KEY
+Time for
+0.02
 ----
+ package Blog::Model::Comment::Schema;
 
-package Blog::Model::Comment::Schema;
-
-column entry => refers_to Blog::Model:Entry
-column author => refers_to Blog::Model::User;
-column body =>
+ column entry => refers_to Blog::Model:Entry
+ column author => refers_to Blog::Model::User;
+ column body =>
     label is 'Content',
     type is 'text',
     render as 'Textarea',
     default is 'First Post!';
 ----
-column title =>
+ column title =>
     label is 'Title',
     since '0.02',
     length is 40,
     hints is '40 bytes max',
     is mandatory;
 ----
+Database
+upgrades
+suck  
+----
+Database
+upgrades
+sucked
+----
+Jifty 
+provides
+help
+----
+ # vi etc/config.yml (Set version to 0.02)
 
+ # jifty server
 
-Upgrading!
-
-# vi etc/config.yml (Set version to 0.02)
-
-
-# jifty server
-
-Show error message
+ Application schema version in database (v0.0.1) doesn't match 
+ application schema version (0.0.2)
+ Please run `bin/jifty schema --setup` to upgrade the database.
 
 ----
 
-(Bump the version)
-
-# jifty schema --setup 
+ # jifty schema --setup 
 
-# jifty server
+ Jifty version 0.605070 up to date.
+ INFO - Gerating SQL to upgrade Blog v0.0.1 database to v0.0.2
+ INFO - Upgraded to version v0.0.2
 
-----
+ # jifty server
+ INFO - You can connect to your server at http://localhost:8888/
 
-# ...and then even more schema magick...
 ----
-column tags =>
+ column tags =>
     since 0.03,
     refers_to Blog::Model::TagCollection by 'entry';
 ----
-column mood => 
+ column mood => 
     since 0.04,
     default is => 'happy',
     valid_values are     
         { display => 'Sad',   value => 'sad' },
         { display => 'Happy', value => 'happy' };
 ----
-column created =>
+ column created =>
     since 0.05,
     is immutable,    
     type is 'timestamp',
@@ -387,52 +375,486 @@
     filters are 'Jifty::DBI::Filter::DateTime';
 
 ----
+Two-step
+upgrade
+----
+ # vi etc/config.yml
 
-Upgrading!
-
-# vi etc/config.yml
-
-(Bump the version to 0.05)
+ (Bump the version to 0.05)
 
-# jifty schema --setup 
+ # jifty schema --setup 
+----
+Jifty::DBI
+caches, too!
+----
+Single Process
+{{#i|Cache::Simple::TimedExpirey}}
+----
+Multi-Host
+{{#i|Cache::Memcached}}
+----
+{{#i|Jifty::DBI::Collection}}
+----
+Joins
+----
+Paging
+{{#i|Data::Page}}
+----
+{{#tag|Actions (Controller)}}
 ----
-ACTIONS (Controller)
+Actions are 
+APIs to your app
 ----
-Actions are just APIs to your app
+(You might call them
+a facade over your code)
 ----
-(You might call them a facade over your code)
+Actions define
+method calls
 ----
-Actions define method calls
+Actions takes 
+typed arguments 
 ----
-Actions takes typed arguments and returns results
+Action return
+ results
 ----
-Actions are Web Services
+Actions are 
+Web Services
 ----
-Actions are web services
+Getting started 
+with actions
 ----
-Getting started with actions
+Jifty provides three 
+actions for each of 
+your model classes
 ----
-Jifty provides three actions for each of your model classes:
-- Create
-- Update
-- Delete
+ - Create
+  (Blog::Action::CreateEntry)
+ - Update
+  (Blog::Action::UpdateEntry)
+ - Delete
+   (Blog::Action::DeleteEntry)
 ----
-Just extend (subclass) the defaults
+Just extend 
+(subclass) 
+the defaults
 ----
-If we had more time, we'd show you that every action is made of:
+If we had more time, 
+we'd show you that 
+every action is made of:
+----
+ sub arguments {}
+ sub validate_arguments {}
+ sub take_action {}
+----
+{{#tag|Jifty::Dispatcher (Kernel)}}
+~ (See Audrey at OSCON!)
+----
+Simple
+----
+Declarative
+----
+Three 
+stages
+----
+ - before
+ - on
+ - after
+----
+Before:
+sets up your state
+----
+On: 
+shows your pages
+----
+After: 
+cleans your state
+----
+{{#tag|Jifty::ClassLoader (??)}}
+----
+I hate
+scaffolds
+----
+They're 
+ugly
+----
+They're
+redundant
+----
+They're
+annoying
+----
+Why have
+{{#i|empty}}
+classes?
+----
+Enter
+{{#i|Jifty::ClassLoader}}
+----
+Autocreates
+----
+Blog
+----
+Blog::Record
+----
+Blog::Collection
+----
+Blog::Model::*Collection
+----
+Blog::Action::{Create,Update,Delete}Model
+----
+Blog::Bootstrap
+----
+Blog::Upgrade
+----
+Blog::Dispatcher
+----
+Blog::CurrentUser
+----
+{{#tag|Continuations (??)}}
+----
+Continuations?
+In Perl?
+----
+Isn't that
+impossible?
+----
+I 
+don't 
+know
+----
+Ours
+are
+fake
+----
+Well,
+kind of
+fake
+----
+Continuations
+serialize
+the world
+----
+App state...
+----
+%ENV...
+----
+Your DBI handle...
+----
+Maybe we don't 
+need all that
+----
+Jifty::Continuations
+serialize your app's
+request state
+----
+That's all
+you need
+----
+Why continuations?
+----
+They make your
+life better
+----
+The web is built on
+----
+GOTO
+----
+Do you {{#i|like}}
+----
+GOTO?
+----
+Continuations 
+give you
+----
+GOSUB
+----
+Welcome to
+civilization
+----
+Back to our Blog
+----
+{{#i|Blog::Dispatcher}}
+----
+ ## Auth and login
+ before '*' => run {
+     if (not Jifty->web->current_user->id ) {
+        Jifty->web->tangent(url => '/login');
+     }
+ };
+----
+{{#i|share/web/templates/login}}
+----
+ &lt;%init>
+ my $action = Jifty->web->new_action(class => 'Login', moniker => 'loginbox' );
+ &lt;/%init>
+  &lt;&amp;|/_elements/wrapper,
+     title => 'Login' &amp;>
+ &lt;h2>Login&lt;/h2>
+ &lt;% Jifty->web->form->start() %>
+ &lt;% $action->form_field('address') %>
+ &lt;% $action->form_field('password') %>
+ &lt;% Jifty->web->return( label => 'Login') %>
+ &lt;% Jifty->web->form->end %>
+ &lt;/&amp;>
 
-- arguments
-- validate_arguments
-- take_action
+~ call => Jifty->web->request->continuation) %>
+~ alexmv, do we need this in form->start?
+----
+{{#tag|Templates and Fragments (View)}}
+----
+Mason
+----
+(TT Coming Soon?)
+----
+Mason Provides
+"Components"
+----
+Server-side 
+inclusion
+----
+Not very 
+Web 2.0,
+ is it?
+----
+Welcome to
+fragments
+----
+Just like
+components...
+----
+With a
+twist
+----
+Client side
+inclusion
+----
+(for AJAX/AHAH)
+----
+Server Side
+inclusion
+----
+(remember lynx?)
+----
+(or your phone)
+----
+Don't worry
+----
+No      
+special
+setup
+----
+Not much
+special
+setup
+----
+Instead of
+----
+ &lt;&amp; /fragments/page_of_posts &amp;>
+----
+You write
+----
+ &lt;% Jifty->web->region(
+	name => "myweblog-posts",
+        path => "/fragments/page_of_posts") 
+ %>
+----
+Then
+you're
+done
+----
+{{#tag|DEVELOPMENT}}
+{{#tag|TOOLS}}
+----
+Standalone Server
+{{#i|HTTP::Server::Simple}}
+----
+{{#i|Module::Install}}
+{{img src="npw.2006/makefile_pl.png" width="552" height="364"}}
+----
+Halos
+ - Mason Profiling
+ - SQL Logging
+ - SQL Profiling
+ - View Introspection
+ - Online Editing
+----
 
+* HALO SCREENSHOT
 ----
-DISPATCHER (Kernel)
-~ (See Audrey at OSCON!)
+Module::Refresh
 ----
-Templates and Fragments (View)
+Magic Profiling
 ----
-Building Applications
+Devel Mode
 ----
-Dispatcher
+{{img src="npw.2006/online_docs.png" width="800" height="622"}}
 ----
-Development Tools
+{{#tag|DEPLOYMENT}}
+----
+Run 
+fast
+----
+FastCGI
+(Apache or
+lightttpd)
+----
+Memcached
+----
+CSS::Squish
+----
+JS::Crunch
+(Coming soon)
+----
+Jifty::Web::Session
+(Designed for AJAX)
+---- 
+{{#tag|THE FUTURE}}
+----
+Wiki-style
+UI Editor
+----
+Even less
+code
+----
+More
+docs
+----
+Sample
+apps
+----
+"Jifty in a Jiffy"
+movies and
+music videos
+----
+{{#tag|GET JIFTY}}
+----
+ cpan Jifty
+----
+ svn co
+   http://svn.jifty.org/svn/jifty.org
+----
+ http://jifty.org/
+----
+Getting started?
+----
+ perldoc Jifty::Manual::Tutorial
+----
+ #jifty on freenode.net
+----
+ jifty-devel at lists.jifty.org
+</html:textarea>
+<deck flex="1" id="deck">
+<vbox flex="1" onmousemove="Presentation.onMouseMoveOnCanvas(event);">
+<toolbox id="canvasToolbar">
+<toolbar>
+<toolbarbutton oncommand="Presentation.home()" label="|&lt;&lt;" observes="canBack"/>
+<toolbarbutton oncommand="Presentation.back()" label="&lt;" observes="canBack"/>
+<toolbarbutton oncommand="Presentation.forward()" label="&gt;" observes="canForward"/>
+<toolbarbutton oncommand="Presentation.end()" label="&gt;&gt;|" observes="canForward"/>
+<toolbarseparator/>
+<hbox align="center">
+<textbox id="current_page" size="4" oninput="if (this.value) Presentation.showPage(parseInt(this.value)-1);"/>
+<description value="/"/>
+<description id="max_page"/>
+</hbox>
+<toolbarseparator/>
+<vbox flex="2">
+<spacer flex="1"/>
+<scrollbar id="scroller" align="center" orient="horizontal" oncommand="Presentation.showPage(parseInt(event.target.getAttribute('curpos')));" onclick="Presentation.showPage(parseInt(event.target.getAttribute('curpos')));" onmousedown="Presentation.onScrollerDragStart();" onmousemove="Presentation.onScrollerDragMove();" onmouseup="Presentation.onScrollerDragDrop();"/>
+<spacer flex="1"/>
+</vbox>
+<toolbarseparator/>
+<spacer flex="1"/>
+<toolbarseparator/>
+<toolbarbutton id="toggleEva" label="Eva" type="checkbox" autoCheck="false" oncommand="Presentation.toggleEvaMode();"/>
+<toolbarseparator/>
+<toolbarbutton label="Edit" oncommand="Presentation.toggleEditMode();"/>
+<toolbarbutton oncommand="Presentation.reload();" label="Reload"/>
+</toolbar>
+</toolbox>
+<vbox flex="1" id="canvas" onclick="Presentation.onPresentationClick(event);">
+<spacer flex="1"/>
+<hbox flex="1">
+<spacer flex="1"/>
+<vbox id="content">
+</vbox>
+<spacer flex="1"/>
+</hbox>
+<spacer flex="1"/>
+</vbox>
+</vbox>
+<vbox flex="1" id="edit">
+<toolbox>
+<toolbar>
+<toolbarbutton label="New Page" oncommand="Presentation.addPage()"/>
+<spacer flex="1"/>
+<toolbarseparator/>
+<toolbarbutton label="View" oncommand="Presentation.toggleEditMode();"/>
+<toolbarbutton oncommand="Presentation.reload();" label="Reload"/>
+</toolbar>
+</toolbox>
+<textbox id="textField" flex="1" multiline="true" oninput="Presentation.onEdit()"/>
+<hbox collapsed="true">
+<iframe id="dataLoader" onload="if (window.Presentation) Presentation.onDataLoad();"/>
+</hbox>
+</vbox>
+</deck>
+<broadcasterset>
+<broadcaster id="canBack"/>
+<broadcaster id="canForward"/>
+</broadcasterset>
+<commandset>
+<command id="cmd_forward" oncommand="if (Presentation.isPresentationMode) Presentation.forward();"/>
+<command id="cmd_back" oncommand="if (Presentation.isPresentationMode) Presentation.back();"/>
+<command id="cmd_home" oncommand="if (Presentation.isPresentationMode) Presentation.home();"/>
+<command id="cmd_end" oncommand="if (Presentation.isPresentationMode) Presentation.end();"/>
+</commandset>
+<keyset>
+<key key=" "      command="cmd_forward"/>
+<key keycode="VK_ENTER"      command="cmd_forward"/>
+<key keycode="VK_RETURN"     command="cmd_forward"/>
+<key keycode="VK_PAGE_DOWN"  command="cmd_forward"/>
+<key keycode="VK_RIGHT"      command="cmd_forward"/>
+<key keycode="VK_DOWN"       command="cmd_forward"/>
+<!--key keycode="VK_BACK_SPACE" command="cmd_back"/-->
+<key keycode="VK_UP"    command="cmd_back"/>
+<key keycode="VK_PAGE_UP"    command="cmd_back"/>
+<!--
+<key keycode="VK_BACK_UP"    command="cmd_back"/>-->
+<!--
+<key keycode="VK_BACK_LEFT"  command="cmd_back"/>-->
+<key keycode="VK_HOME"       command="cmd_home"/>
+<!--
+<key keycode="VK_END"        command="cmd_end"/>-->
+<key key="n" modifiers="accel" oncommand="Presentation.addPage();"/>
+<key key="r" modifiers="accel" oncommand="window.location.reload();"/>
+<key key="e" modifiers="accel" oncommand="Presentation.toggleEditMode();"/>
+<key key="a" modifiers="accel" oncommand="Presentation.toggleEvaMode();"/>
+</keyset>
+<script src="takahashi.js" type="application/x-javascript" />
+</page>
+
+<!-- ***** BEGIN LICENSE BLOCK *****
+   - Version: MPL 1.1
+   -
+   - The contents of this file are subject to the Mozilla Public License Version
+   - 1.1 (the "License"); you may not use this file except in compliance with
+   - the License. You may obtain a copy of the License at
+   - http://www.mozilla.org/MPL/
+   -
+   - Software distributed under the License is distributed on an "AS IS" basis,
+   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+   - for the specific language governing rights and limitations under the
+   - License.
+   -
+   - The Original Code is the Takahashi-Method-based Presentation Tool in XUL.
+   -
+   - The Initial Developer of the Original Code is SHIMODA Hiroshi.
+   - Portions created by the Initial Developer are Copyright (C) 2005
+   - the Initial Developer. All Rights Reserved.
+   -
+   - Contributor(s): SHIMODA Hiroshi <piro at p.club.ne.jp>
+   -
+   - ***** END LICENSE BLOCK ***** -->
+
+

Added: jifty/trunk/doc/talks/npw.2006/blog.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/canonicalize_entry.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_3_files.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_app.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_edit_model.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_model.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_schema_setup.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_server.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_web_1.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_web_crud.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_web_crud_create_2.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_web_crud_edit.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_web_crud_edited.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_web_crud_new.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/jifty_web_dbadmin.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/makefile_pl.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/new_entry.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/online_docs.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/tests.png
==============================================================================
Binary file. No diff available.

Added: jifty/trunk/doc/talks/npw.2006/validate_entry.png
==============================================================================
Binary file. No diff available.

Modified: jifty/trunk/doc/talks/takahashi.css
==============================================================================
--- jifty/trunk/doc/talks/takahashi.css	(original)
+++ jifty/trunk/doc/talks/takahashi.css	Tue Jun 13 07:58:30 2006
@@ -168,6 +168,7 @@
 }
 
 .subtitle {
+	display: none;
     font-family: "Kochi Gothic";
     color: yellow;
     text-align: center;


More information about the Jifty-commit mailing list