[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
+♨ 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>
+ <%ARGS>
$create # From the dispatcher
- </%ARGS>
- <&|/_elements/wrapper,
- title => 'Create an article' &>
- <% Jifty->web->form->start %>
+ </%ARGS>
+ <&|/_elements/wrapper,
+ title => 'Create an article' &>
+ <% Jifty->web->form->start %>
% foreach my $arg ($create->argument_names) {
- <% $create->form_field($arg) %>
+ <% $create->form_field($arg) %>
% }
- <% Jifty->web->form->submit( label => 'Save' ) %>
- <% Jifty->web->form->end %>
- </&>
+ <% Jifty->web->form->submit( label => 'Save' ) %>
+ <% Jifty->web->form->end %>
+ </&>
----
- <%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
+ <%ARGS>
+ $entries # From the dispatcher
+ </%ARGS>
+ <&|/_elements/wrapper&>
+ % while (my $entry = $entries->next) {
+ <h2><% $entry->title %></h2>
+ <div class="body">
+ <% $entry->body %>
+ </div>
+ % }
+ </&>
----
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}}
+----
+ <%init>
+ my $action = Jifty->web->new_action(class => 'Login', moniker => 'loginbox' );
+ </%init>
+ <&|/_elements/wrapper,
+ title => 'Login' &>
+ <h2>Login</h2>
+ <% Jifty->web->form->start() %>
+ <% $action->form_field('address') %>
+ <% $action->form_field('password') %>
+ <% Jifty->web->return( label => 'Login') %>
+ <% Jifty->web->form->end %>
+ </&>
-- 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
+----
+ <& /fragments/page_of_posts &>
+----
+You write
+----
+ <% 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="|<<" observes="canBack"/>
+<toolbarbutton oncommand="Presentation.back()" label="<" observes="canBack"/>
+<toolbarbutton oncommand="Presentation.forward()" label=">" observes="canForward"/>
+<toolbarbutton oncommand="Presentation.end()" label=">>|" 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