[Rt-commit] [svn] r958 - in RT-ProjectManager/trunk: . html html/Projects html/Projects/Elements lib lib/RT

jesse at pallas.eruditorum.org jesse at pallas.eruditorum.org
Thu May 27 21:16:24 EDT 2004


Author: jesse
Date: Thu May 27 21:16:23 2004
New Revision: 958

Added:
   RT-ProjectManager/trunk/MANIFEST
   RT-ProjectManager/trunk/META.yml
   RT-ProjectManager/trunk/Makefile
   RT-ProjectManager/trunk/Makefile.PL
   RT-ProjectManager/trunk/html/
   RT-ProjectManager/trunk/html/Projects/
   RT-ProjectManager/trunk/html/Projects/Create.html
   RT-ProjectManager/trunk/html/Projects/Edit.html
   RT-ProjectManager/trunk/html/Projects/Elements/
   RT-ProjectManager/trunk/html/Projects/Elements/CreateTask
   RT-ProjectManager/trunk/html/Projects/Elements/EditTask
   RT-ProjectManager/trunk/html/Projects/Elements/OverviewEntry
   RT-ProjectManager/trunk/html/Projects/Elements/SelectProjectTask
   RT-ProjectManager/trunk/html/Projects/Elements/SelectProjectTaskEntry
   RT-ProjectManager/trunk/html/Projects/Elements/Tabs
   RT-ProjectManager/trunk/html/Projects/Elements/TicketTabs
   RT-ProjectManager/trunk/html/Projects/Gantt.html
   RT-ProjectManager/trunk/html/Projects/History.html
   RT-ProjectManager/trunk/html/Projects/Overview.html
   RT-ProjectManager/trunk/html/Projects/Schedule.html
   RT-ProjectManager/trunk/html/Projects/ScheduleByActor.html
   RT-ProjectManager/trunk/html/Projects/index.html
   RT-ProjectManager/trunk/lib/
   RT-ProjectManager/trunk/lib/RT/
   RT-ProjectManager/trunk/lib/RT/ProjectManager.pm
Log:
Initial commit

Added: RT-ProjectManager/trunk/MANIFEST
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/MANIFEST	Thu May 27 21:16:23 2004
@@ -0,0 +1,26 @@
+html/Projects/Create.html
+html/Projects/Edit.html
+html/Projects/Elements/CreateTask
+html/Projects/Elements/EditTask
+html/Projects/Elements/OverviewEntry
+html/Projects/Elements/SelectProjectTask
+html/Projects/Elements/SelectProjectTaskEntry
+html/Projects/Elements/Tabs
+html/Projects/Elements/TicketTabs
+html/Projects/Gantt.html
+html/Projects/History.html
+html/Projects/index.html
+html/Projects/Overview.html
+html/Projects/Schedule.html
+html/Projects/ScheduleByActor.html
+inc/Module/Install.pm
+inc/Module/Install/Base.pm
+inc/Module/Install/Makefile.pm
+inc/Module/Install/MakeMaker.pm
+inc/Module/Install/Metadata.pm
+inc/Module/Install/RTx.pm
+lib/RT/ProjectManager.pm
+Makefile
+Makefile.PL
+MANIFEST			This list of files
+META.yml

Added: RT-ProjectManager/trunk/META.yml
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/META.yml	Thu May 27 21:16:23 2004
@@ -0,0 +1,11 @@
+name: RT-ProjectManager
+version: 0.01_01
+abstract: RT ProjectManager Extension
+author: Jesse Vincent <jesse at bestpractical.com>
+license: GPLv2
+distribution_type: module
+no_index:
+  directory:
+    - html
+    - inc
+generated_by: Module::Install version 0.33

Added: RT-ProjectManager/trunk/Makefile
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/Makefile	Thu May 27 21:16:23 2004
@@ -0,0 +1,709 @@
+# This Makefile is for the RT::ProjectManager extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.17 (Revision: 1.133) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+#       ANY CHANGES MADE HERE WILL BE LOST!
+#
+#   MakeMaker ARGV: ()
+#
+#   MakeMaker Parameters:
+
+#     ABSTRACT => q[RT ProjectManager Extension]
+#     AUTHOR => q[Jesse Vincent <jesse at bestpractical.com>]
+#     DIR => []
+#     DISTNAME => q[RT-ProjectManager]
+#     INSTALLSITELIB => q[/opt/rt3/local/lib]
+#     NAME => q[RT::ProjectManager]
+#     NO_META => q[1]
+#     PREREQ_PM => {  }
+#     VERSION => q[0.01_01]
+#     dist => { PREOP=>q[$(PERL) -I. -MModule::Install::Admin -e "dist_preop(q($(DISTVNAME)))"] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/perl/5.8/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = cc
+LDDLFLAGS = -shared -L/usr/local/lib
+LDFLAGS =  -L/usr/local/lib
+LIBC = /lib/libc-2.3.2.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 2.4.26-ti1211
+RANLIB = :
+SITELIBEXP = /usr/local/share/perl/5.8.4
+SITEARCHEXP = /usr/local/lib/perl/5.8.4
+SO = so
+EXE_EXT = 
+FULL_AR = /usr/bin/ar
+VENDORARCHEXP = /usr/lib/perl5
+VENDORLIBEXP = /usr/share/perl5
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+NAME = RT::ProjectManager
+NAME_SYM = RT_ProjectManager
+VERSION = 0.01_01
+VERSION_MACRO = VERSION
+VERSION_SYM = 0_01_01
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 0.01_01
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1p
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR = 
+PREFIX = /usr
+PERLPREFIX = $(PREFIX)
+SITEPREFIX = $(PREFIX)/local
+VENDORPREFIX = $(PREFIX)
+INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.8
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = /opt/rt3/local/lib
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.8
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = /usr/local/lib/perl/5.8.4
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = $(PERLPREFIX)/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = $(SITEPREFIX)/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = $(VENDORPREFIX)/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = $(PERLPREFIX)/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = $(SITEPREFIX)/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = $(VENDORPREFIX)/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/share/perl/5.8
+PERL_ARCHLIB = /usr/lib/perl/5.8
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKEFILE_OLD = $(FIRST_MAKEFILE).old
+MAKE_APERL_FILE = $(FIRST_MAKEFILE).aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/perl/5.8/CORE
+PERL = /usr/bin/perl -Iinc
+FULLPERL = /usr/bin/perl -Iinc
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER   = /usr/share/perl/5.8/ExtUtils/MakeMaker.pm
+MM_VERSION  = 6.17
+MM_REVISION = 1.133
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE  = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = RT/ProjectManager
+BASEEXT = ProjectManager
+PARENT_NAME = RT
+DLBASE = $(BASEEXT)
+VERSION_FROM = 
+OBJECT = 
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+
+# Handy lists of source code files:
+XS_FILES = 
+C_FILES  = 
+O_FILES  = 
+H_FILES  = 
+MAN1PODS = 
+MAN3PODS = 
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DIRFILESEP)Config.pm $(PERL_INC)$(DIRFILESEP)config.h
+
+# Where to build things
+INST_LIBDIR      = $(INST_LIB)/RT
+INST_ARCHLIBDIR  = $(INST_ARCHLIB)/RT
+
+INST_AUTODIR     = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC      = 
+INST_DYNAMIC     = 
+INST_BOOT        = 
+
+# Extra linker info
+EXPORT_LIST        = 
+PERL_ARCHIVE       = 
+PERL_ARCHIVE_AFTER = 
+
+
+TO_INST_PM = lib/RT/ProjectManager.pm
+
+PM_TO_BLIB = lib/RT/ProjectManager.pm \
+	blib/lib/RT/ProjectManager.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 1.42
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(PERLRUN)  -e 'use AutoSplit;  autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(SHELL) -c true
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(PERLRUN) "-MExtUtils::Command" -e mkpath
+EQUALIZE_TIMESTAMP = $(PERLRUN) "-MExtUtils::Command" -e eqtime
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(PERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
+DOC_INSTALL = $(PERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
+UNINSTALL = $(PERLRUN) "-MExtUtils::Command::MM" -e uninstall
+WARN_IF_OLD_PACKLIST = $(PERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt: all
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip --best
+SUFFIX = .gz
+SHAR = shar
+PREOP = $(PERL) -I. -MModule::Install::Admin -e "dist_preop(q($(DISTVNAME)))"
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = RT-ProjectManager
+DISTVNAME = RT-ProjectManager-0.01_01
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIB="$(LIB)"\
+	LIBPERL_A="$(LIBPERL_A)"\
+	LINKTYPE="$(LINKTYPE)"\
+	PREFIX="$(PREFIX)"\
+	OPTIMIZE="$(OPTIMIZE)"\
+	PASTHRU_DEFINE="$(PASTHRU_DEFINE)"\
+	PASTHRU_INC="$(PASTHRU_INC)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES: .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest
+
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+	$(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+	$(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+	$(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) $(INST_LIBDIR)$(DIRFILESEP).exists
+	$(NOECHO) $(NOOP)
+
+config :: $(INST_ARCHAUTODIR)$(DIRFILESEP).exists
+	$(NOECHO) $(NOOP)
+
+config :: $(INST_AUTODIR)$(DIRFILESEP).exists
+	$(NOECHO) $(NOOP)
+
+$(INST_AUTODIR)/.exists :: /usr/lib/perl/5.8/CORE/perl.h
+	$(NOECHO) $(MKPATH) $(INST_AUTODIR)
+	$(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/lib/perl/5.8/CORE/perl.h $(INST_AUTODIR)/.exists
+
+	-$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_AUTODIR)
+
+$(INST_LIBDIR)/.exists :: /usr/lib/perl/5.8/CORE/perl.h
+	$(NOECHO) $(MKPATH) $(INST_LIBDIR)
+	$(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/lib/perl/5.8/CORE/perl.h $(INST_LIBDIR)/.exists
+
+	-$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_LIBDIR)
+
+$(INST_ARCHAUTODIR)/.exists :: /usr/lib/perl/5.8/CORE/perl.h
+	$(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+	$(NOECHO) $(EQUALIZE_TIMESTAMP) /usr/lib/perl/5.8/CORE/perl.h $(INST_ARCHAUTODIR)/.exists
+
+	-$(NOECHO) $(CHMOD) $(PERM_RWX) $(INST_ARCHAUTODIR)
+
+help:
+	perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all 
+	$(NOECHO) $(NOOP)
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+	-$(RM_RF) ./blib $(MAKE_APERL_FILE) $(INST_ARCHAUTODIR)/extralibs.all $(INST_ARCHAUTODIR)/extralibs.ld perlmain.c tmon.out mon.out so_locations pm_to_blib *$(OBJ_EXT) *$(LIB_EXT) perl.exe perl perl$(EXE_EXT) $(BOOTSTRAP) $(BASEEXT).bso $(BASEEXT).def lib$(BASEEXT).def $(BASEEXT).exp $(BASEEXT).x core core.*perl.*.? *perl.core core.[0-9] core.[0-9][0-9] core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9][0-9]
+	-$(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+
+# Delete temporary files (via clean) and also delete installed files
+realclean purge ::  clean realclean_subdirs
+	$(RM_RF) $(INST_AUTODIR) $(INST_ARCHAUTODIR)
+	$(RM_RF) $(DISTVNAME)
+	$(RM_F)  blib/lib/RT/ProjectManager.pm $(MAKEFILE_OLD) $(FIRST_MAKEFILE)
+
+
+# --- MakeMaker metafile section:
+metafile:
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker metafile_addtomanifest section:
+metafile_addtomanifest:
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+	$(NOECHO) $(NOOP)
+
+distcheck :
+	$(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+	$(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+	$(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+	$(RM_F) *~ *.orig */*~ */*.orig
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+	$(NOECHO) $(PERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+	-e '    if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+	$(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+	uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+	$(PREOP)
+	$(TO_UNIX)
+	$(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+	$(RM_RF) $(DISTVNAME)
+	$(COMPRESS) $(DISTVNAME).tar
+	$(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+	$(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+	$(PREOP)
+	$(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+	$(RM_RF) $(DISTVNAME)
+	$(POSTOP)
+
+shdist : distdir
+	$(PREOP)
+	$(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+	$(RM_RF) $(DISTVNAME)
+	$(POSTOP)
+
+
+# --- MakeMaker distdir section:
+distdir : metafile metafile_addtomanifest
+	$(RM_RF) $(DISTVNAME)
+	$(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+		-e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+
+
+# --- MakeMaker dist_test section:
+
+disttest : distdir
+	cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
+	cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+	cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+	$(PERLRUN) "-MExtUtils::Manifest=maniread" \
+	  -e "@all = keys %{ maniread() };" \
+	  -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+	  -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+
+install_perl :: all pure_perl_install doc_perl_install
+
+install_site :: all pure_site_install doc_site_install
+
+install_vendor :: all pure_vendor_install doc_vendor_install
+
+pure_install :: pure_$(INSTALLDIRS)_install
+
+doc_install :: doc_$(INSTALLDIRS)_install
+
+pure__install : pure_site_install
+	$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+	$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+	$(NOECHO) umask 022; $(MOD_INSTALL) \
+		$(INST_LIB) $(DESTINSTALLPRIVLIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+		$(INST_BIN) $(DESTINSTALLBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+	$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+		$(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+	$(NOECHO) umask 02; $(MOD_INSTALL) \
+		read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+		write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+		$(INST_LIB) $(DESTINSTALLSITELIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+		$(INST_BIN) $(DESTINSTALLSITEBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+	$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+		$(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install ::
+	$(NOECHO) umask 022; $(MOD_INSTALL) \
+		$(INST_LIB) $(DESTINSTALLVENDORLIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+		$(INST_BIN) $(DESTINSTALLVENDORBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install ::
+
+doc_site_install ::
+	$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
+	-$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
+	-$(NOECHO) umask 02; $(DOC_INSTALL) \
+		"Module" "$(NAME)" \
+		"installed into" "$(INSTALLSITELIB)" \
+		LINKTYPE "$(LINKTYPE)" \
+		VERSION "$(VERSION)" \
+		EXE_FILES "$(EXE_FILES)" \
+		>> $(DESTINSTALLSITEARCH)/perllocal.pod
+
+doc_vendor_install ::
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+
+uninstall_from_perldirs ::
+	$(NOECHO) $(UNINSTALL) $(PERL_ARCHLIB)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_sitedirs ::
+	$(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+	$(NOECHO) $(UNINSTALL) $(VENDORARCHEXP)/auto/$(FULLEXT)/.packlist
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+	$(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+	$(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+	$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+	$(NOECHO) $(MV)   $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+	-$(MAKE) -f $(MAKEFILE_OLD) clean $(DEV_NULL) || $(NOOP)
+	$(PERLRUN) Makefile.PL 
+	$(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+	$(NOECHO) $(ECHO) "==> Please rerun the make command.  <=="
+	false
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET    = perl
+FULLPERL      = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+	$(MAKE) -f $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE)
+	$(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+	$(NOECHO) $(PERLRUNINST) \
+		Makefile.PL DIR= \
+		MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+		MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES = 
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+	$(NOECHO) $(ECHO) 'No tests defined for $(NAME) extension.'
+
+test_dynamic :: pure_all
+
+testdb_dynamic :: pure_all
+	PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-Iinc" "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+	$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="0,01_01,0,0">' > $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <ABSTRACT>RT ProjectManager Extension</ABSTRACT>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <AUTHOR>Jesse Vincent &lt;jesse at bestpractical.com&gt;</AUTHOR>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <IMPLEMENTATION>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="i386-linux-thread-multi" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    </IMPLEMENTATION>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib: $(TO_INST_PM)
+	$(NOECHO) $(PERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')'\
+	  lib/RT/ProjectManager.pm blib/lib/RT/ProjectManager.pm 
+	$(NOECHO) $(TOUCH) $@
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
+# Postamble by Module::Install 0.33
+# --- Module::Install::Admin::Makefile section:
+
+realclean purge ::
+	$(RM_F) $(DISTVNAME).tar$(SUFFIX)
+	$(RM_RF) inc MANIFEST.bak _build
+	$(PERL) -I. -MModule::Install::Admin -e "remove_meta()"
+
+reset :: purge
+
+upload :: test dist
+	cpan-upload -verbose $(DISTVNAME).tar$(SUFFIX)
+
+grok ::
+	perldoc Module::Install
+
+distsign ::
+	cpansign -s
+
+install ::
+	$(NOECHO) $(PERL) -MExtUtils::Install -e "install({q(html), q(/opt/rt3/share/html)})"
+

Added: RT-ProjectManager/trunk/Makefile.PL
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/Makefile.PL	Thu May 27 21:16:23 2004
@@ -0,0 +1,6 @@
+use inc::Module::Install;
+
+RTx('RT-ProjectManager');
+author('Jesse Vincent <jesse at bestpractical.com>');
+license('GPLv2');
+&WriteMakefile();

Added: RT-ProjectManager/trunk/html/Projects/Create.html
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Create.html	Thu May 27 21:16:23 2004
@@ -0,0 +1,14 @@
+%# $Header: /raid/cvsroot/rt-addons/Projects/html/Create.html,v 1.1 2002/01/29 16:57:10 jesse Exp $
+%# Copyright 1996-2000 Jesse Vincent <jesse at fsck.com>
+<& /Elements/Header, Title => "Create new task", ShowBar => 0 &>
+<div align="right">
+<font size=-2>[<a href="#close" onClick="window.close();">Close</a>]</font>
+</div>
+<h1>New task</h1>
+<& Elements/CreateTask , %ARGS &>
+</BODY>
+</HTML>
+<%ARGS>
+</%ARGS>
+
+

Added: RT-ProjectManager/trunk/html/Projects/Edit.html
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Edit.html	Thu May 27 21:16:23 2004
@@ -0,0 +1,137 @@
+%# $Header: /raid/cvsroot/rt-addons/Projects/html/Edit.html,v 1.3 2002/01/25 20:14:55 jesse Exp $
+%# Copyright 1996-2000 Jesse Vincent <jesse at fsck.com>
+<& /Elements/Header, Title => "Edit: ". $TicketObj->Subject, ShowBar => 0 &>
+<DIV align="right">
+<font size=-2>
+[ <a href="#close" onClick="window.close();">Close</a> ]
+</font>
+</DIV>
+<BR>
+<& Elements/TicketTabs, current_tab => "Projects/Edit.html", Ticket=> $TicketObj, Project => $Project &>
+
+
+<& /Elements/ListActions, actions => \@results &>
+<FORM enctype="multipart/formdata" method="post" ACTION="Edit.html">
+
+<input type=hidden name="id" value="<%$TicketObj->Id%>">
+<input type=hidden name="Project" value="<%$Project%>">
+<TABLE border=0> 
+<TR>
+<TD colspan=3>
+        <SPAN CLASS="label">Subject</SPAN><BR>
+        <input name=Subject value="<%$TicketObj->Subject|h%>"  SIZE=50>
+</TD>
+</TR>
+<TR>
+<TD colspan=3><SPAN class=label>Parent</SPAN><BR>
+<& Elements/SelectProjectTask, Project => $Project, Default =>  $Parent &>
+</TD>
+</TR>
+<TR>
+<TD><SPAN class=label>Status</SPAN><BR>
+<& /Elements/SelectStatus, Name => 'Status', Default=> $TicketObj->Status &>
+</TD>
+<TD> <SPAN class=label>Owner</SPAN><BR>
+<& /Elements/SelectOwner, Name => 'Owner', Default => $TicketObj->OwnerObj->Id,
+        TicketObj => $TicketObj
+&>
+</TD>
+<TD><SPAN class=label>Queue</SPAN><BR>
+<& /Elements/SelectQueue, Name => 'Queue', Default =>$TicketObj->QueueObj->Id&>
+</TD>
+</TR>
+<TD> <SPAN class=label>Time Worked</SPAN><BR>
+<input name=TimeWorked value="<%$TicketObj->TimeWorked%>" SIZE=5>
+</TD>
+<TD><SPAN class=label>Time Left</SPAN><BR>
+<input name=TimeLeft value="<%$TicketObj->TimeLeft%>" SIZE=5>
+</TD>
+</TR>
+<TR>
+<TD><SPAN  class=label>Priority</SPAN><BR>
+<input name=Priority value="<%$TicketObj->Priority%>" SIZE=2>
+</TD>
+<TD><SPAN class=label>Final Priority</SPAN><BR>
+<input name=FinalPriority value="<%$TicketObj->FinalPriority%>" SIZE=2>
+</TD>
+</TR>
+<TR><TD><SPAN class=label>Starts:</SPAN><BR> 
+<& /Elements/SelectDate, menu_prefix => 'Starts', current => 0 &> 
+        (<% $TicketObj->StartsObj->AsString %>)
+</TD>
+<TD><SPAN class=label>Started:</SPAN><BR>
+<& /Elements/SelectDate, menu_prefix => 'Started', current => 0 &> (<%$TicketObj->StartedObj->AsString %>)
+</TD>
+<TD><SPAN class=label>Due:</SPAN><BR>
+<& /Elements/SelectDate, menu_prefix => 'Due', current => 0 &> (<% $TicketObj->DueObj->AsString %>)
+</TD>
+</TR>
+
+</TABLE>
+<HR>
+
+<h2>Record notes</h2>
+Visibility: <select name="UpdateType">
+<option value="private">Private</option>
+<option value="response">Public</option>
+</select><BR>
+Attach file: <input type=file name="UpdateAttachment"><BR>
+<textarea name="UpdateContent" rows=8 cols=60></textarea>
+
+<& /Elements/Submit &>
+
+</FORM>
+<%INIT>
+
+my $TicketObj;
+my @results;
+
+# TODO this feels hacky
+if ($id eq 'new') {
+   ($TicketObj, @results) = CreateTicket(%ARGS);  
+}
+
+else {
+$TicketObj = LoadTicket($id);
+
+
+my @wresults = ProcessTicketWatchers( TicketObj => $TicketObj, 
+						ARGSRef => \%ARGS);    
+my @bresults = ProcessTicketBasics( TicketObj => $TicketObj, 
+					ARGSRef => \%ARGS);
+my @okresults = ProcessTicketObjectKeywords(TicketObj => $TicketObj, 
+						ARGSRef => \%ARGS);
+
+my @dresults = ProcessTicketDates( TicketObj => $TicketObj, 
+					ARGSRef => \%ARGS);
+my @lresults = ProcessTicketLinks( TicketObj => $TicketObj, 
+					ARGSRef => \%ARGS);
+ProcessUpdateMessage(TicketObj => $TicketObj, 
+			ARGSRef=>\%ARGS, 
+			Actions=>\@results);
+
+
+
+push @results, @bresults;
+push @results, @wresults;
+push @results, @dresults;
+push @results, @lresults;
+push @results, @okresults;
+}
+
+my $Parent;
+
+if ($TicketObj->MemberOf->First && $TicketObj->MemberOf->First->TargetObj) {
+	$Parent = $TicketObj->MemberOf->First->TargetObj->Id;
+} else {
+	$Parent = undef;
+}
+</%INIT>
+<%ARGS>
+$Project => undef 
+$id => undef
+</%ARGS>
+
+
+
+

Added: RT-ProjectManager/trunk/html/Projects/Elements/CreateTask
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Elements/CreateTask	Thu May 27 21:16:23 2004
@@ -0,0 +1,83 @@
+
+<FORM enctype="multipart/formdata" method="post" ACTION="Edit.html">
+
+<input type=hidden name="id" value="new">
+<input type=hidden name="Project" value="<%$Project%>">
+<TABLE border=0> 
+<TR>
+<TD colspan=3>
+<font size=-1>Subject</font><BR>
+<input name=Subject value=""  SIZE=50>
+</TD>
+</TR>
+<TR>
+<TD colspan=3>
+<font size=-1>Parent</font><BR>
+<& SelectProjectTask, Project => $Project, Default =>  $Parent, Name => 'new-MemberOf' &>
+</TD>
+</TR>
+<TR>
+<TD>
+<font size=-1>Status</font><BR>
+<& /Elements/SelectStatus, Name => 'Status', Default => 'new'&>
+</TD>
+</TD>
+<TD>
+<font size=-1>Time Worked</font><BR>
+<input name=TimeWorked value="" SIZE=5>
+
+</TD>
+<TD>
+<font size=-1>Time Left</font>
+<BR>
+<input name=TimeLeft value="" SIZE=5>
+</TD>
+</TR>
+<TR>
+<TD>
+<font size=-1>Queue</font>
+<BR>
+<& /Elements/SelectQueue, Name => 'Queue', Default => $Queue &>
+</TD>
+<TD>
+<font size=-1>Priority</font><BR>
+<input name=Priority value="" SIZE=2>
+</TD>
+<TD>
+<font size=-1>Final Priority</font><BR>
+<input name=FinalPriority value="" SIZE=2>
+</TD>
+</TR>
+<TR><TD>
+<font size=-1>Starts</font><BR> 
+<& /Elements/SelectDate, menu_prefix => 'Starts', current => 0 &> 
+</TD>
+<TD>
+<font size=-1>Started</font><BR>
+<& /Elements/SelectDate, menu_prefix => 'Started', current => 0 &> 
+</TD>
+<TD>
+<font size=-1>Due</font><BR>
+<& /Elements/SelectDate, menu_prefix => 'Due', current => 0 &> 
+</TD>
+</TR>
+
+</TABLE>
+
+<h2>Record notes</h2>
+Visibility: <select name="UpdateType">
+<option value="private">Private</option>
+<option value="response">Public</option>
+</select><BR>
+Attach file: <input type=file name="Attach"><BR>
+<textarea name="Content" rows=8 cols=60></textarea>
+
+<& /Elements/Submit &>
+
+</FORM>
+<%ARGS>
+$id => undef
+$Project => undef
+$Queue => undef
+$Parent => undef
+</%ARGS>

Added: RT-ProjectManager/trunk/html/Projects/Elements/EditTask
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Elements/EditTask	Thu May 27 21:16:23 2004
@@ -0,0 +1,129 @@
+<h1>Details for task #<%$TicketObj->Id%>:  <%$TicketObj->Subject%></h1>
+
+<& /Elements/ListActions, actions => \@results &>
+<FORM enctype="multipart/formdata" method="post" ACTION="Edit.html">
+<DIV ALIGN=RIGHT>[<A HREF="History.html?id=<%$TicketObj->Id%>" onClick="window.open('History.html?id=<%$TicketObj->Id%>','wdyt','toolbar=no,width=500,height=450,left=10,top=10,screenX=30,screenY=30,status=no,scrollbars=yes,resizable=1');return false">Show Task History</A>]</DIV>
+
+<input type=hidden name="id" value="<%$TicketObj->Id%>">
+<input type=hidden name="Project" value="<%$Project%>">
+<TABLE border=0> 
+<TR>
+<TD colspan=3>
+        Subject<BR>
+        <input name=Subject value="<%$TicketObj->Subject|h%>"  SIZE=50>
+</TD>
+</TR>
+<TR>
+<TD colspan=3>
+Parent<BR>
+<& SelectProjectTask, Project => $Project, Default =>  $Parent &>
+</TD>
+</TR>
+<TR>
+<TD>
+Status<BR>
+<& /Elements/SelectStatus, Name => 'Status', Default=> $TicketObj->Status &>
+</TD>
+</TD>
+<TD>
+Time Worked<BR>
+<input name=TimeWorked value="<%$TicketObj->TimeWorked%>" SIZE=5>
+
+</TD>
+<TD>
+Time Left<BR>
+<input name=TimeLeft value="<%$TicketObj->TimeLeft%>" SIZE=5>
+</TD>
+</TR>
+<TR>
+<TD>
+Queue<BR>
+<& /Elements/SelectQueue, Name => 'Queue', Default =>$TicketObj->QueueObj->Id&>
+</TD>
+<TD>
+Priority<BR>
+<input name=Priority value="<%$TicketObj->Priority%>" SIZE=2>
+</TD>
+<TD>
+Final Priority<BR>
+<input name=FinalPriority value="<%$TicketObj->FinalPriority%>" SIZE=2>
+</TD>
+</TR>
+<TR><TD>
+Starts:<BR> 
+<& /Elements/SelectDate, menu_prefix => 'Starts', current => 0 &> 
+        (<% $TicketObj->StartsObj->AsString %>)
+</TD>
+<TD>
+Started:<BR>
+<& /Elements/SelectDate, menu_prefix => 'Started', current => 0 &> (<%$TicketObj->StartedObj->AsString %>)
+</TD>
+<TD>
+Due:<BR>
+<& /Elements/SelectDate, menu_prefix => 'Due', current => 0 &> (<% $TicketObj->DueObj->AsString %>)
+</TD>
+</TR>
+
+</TABLE>
+
+<h2>Record notes</h2>
+Visibility: <select name="UpdateType">
+<option value="private">Private</option>
+<option value="response">Public</option>
+</select><BR>
+Attach file: <input type=file name="UpdateAttachment"><BR>
+<textarea name="UpdateContent" rows=8 cols=60></textarea>
+
+<& /Elements/Submit &>
+
+</FORM>
+<%INIT>
+
+my $TicketObj;
+my @results;
+
+# TODO this feels hacky
+if ($id = 'new') {
+   ($TicketObj, @results) = CreateTicket(%ARGS);  
+}
+
+else {
+$TicketObj = LoadTicket($id);
+my $Parent;
+
+if ($TicketObj->MemberOf->First && $TicketObj->MemberOf->First->TargetObj) {
+	$Parent = $TicketObj->MemberOf->First->TargetObj->Id;
+} else {
+	$Parent = undef;
+}
+
+
+my @wresults = ProcessTicketWatchers( TicketObj => $TicketObj, 
+						ARGSRef => \%ARGS);    
+my @bresults = ProcessTicketBasics( TicketObj => $TicketObj, 
+					ARGSRef => \%ARGS);
+my @okresults = ProcessTicketObjectKeywords(TicketObj => $TicketObj, 
+						ARGSRef => \%ARGS);
+
+my @dresults = ProcessTicketDates( TicketObj => $TicketObj, 
+					ARGSRef => \%ARGS);
+my @lresults = ProcessTicketLinks( TicketObj => $TicketObj, 
+					ARGSRef => \%ARGS);
+ProcessUpdateMessage(TicketObj => $TicketObj, 
+			ARGSRef=>\%ARGS, 
+			Actions=>\@results);
+
+
+
+push @results, @bresults;
+push @results, @wresults;
+push @results, @dresults;
+push @results, @lresults;
+push @results, @okresults;
+}
+
+</%INIT>
+<%ARGS>
+$Project => undef 
+$id => undef
+</%ARGS>

Added: RT-ProjectManager/trunk/html/Projects/Elements/OverviewEntry
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Elements/OverviewEntry	Thu May 27 21:16:23 2004
@@ -0,0 +1,78 @@
+% if ($Root) {
+% if ($ARGS{'Edit-'.$Root->Id})  {
+% my $Parent;
+%if ($Root->MemberOf->First && $Root->MemberOf->First->TargetObj) {
+%        $Parent = $Root->MemberOf->First->TargetObj->Id;
+%} else {
+%        $Parent = undef;
+%}
+<TR>
+<TD><% "&nbsp;"x $Depth|n %><input name="Ticket-<%$Root->id%>-Subject" value="<%$Root->Subject%>" size="25"><br>
+%#<&|/l&>Move</&>:<& SelectProjectTask, Name=> 'Ticket-'.$Root->id."-Parent", Project => $Project, Default =>  $Parent &>
+</TD>
+<TD><& /Elements/SelectOwner, Name => 'Ticket-'.$Root->id.'-Owner', Default => $Root->OwnerObj->id &></TD>
+<TD><& /Elements/SelectStatus, Name => 'Ticket-'.$Root->id.'-Status', Default => $Root->Status &></TD>
+<TD><input name="Ticket-<%$Root->id%>-Due" value ="<%$Root->Due%>" size=10></TD>
+<TD><input name="Ticket-<%$Root->id%>-Priority" value="<%$Root->Priority%>" size=2></TD>
+<TD><input name="Ticket-<%$Root->id%>-TimeWorked" value="<%$Root->TimeWorked%>" size="3"></TD>
+<TD><input name="Ticket-<%$Root->id%>-TimeLeft" value="<%$Root->TimeLeft%>" size="3"></TD>
+<TD><input type="submit"  value="<%loc('Save')%>"></TD>
+</TR>
+% }
+% else {
+
+<TR>
+<TD><tt><% "&nbsp;"x $Depth|n %></tt><A HREF="<%$RT::WebPath%>/Ticket/Display.html?id=<%$Root->id%>" target="_newwin"><%$Root->Subject%></A></TD>
+<TD><%$Root->OwnerObj->Name%></TD>
+<TD><%$Root->Status%></TD>
+<TD><%$Root->DueObj->AgeAsString%></TD>
+<TD><%$Root->Priority%></TD>
+<TD><%int($Root->TimeWorked/6)/10%></TD>
+<TD><%int($Root->TimeLeft/6)/10%></TD>
+<TD align=right>
+<input type="submit" name="AddChildOf-<%$Root->Id%>" value="+">
+<input type="submit" name="Edit-<%$Root->Id%>" value="<%loc('Edit')%>">
+</td>
+</TR>
+% }
+
+% if ($Depth < $MaxDepth) {
+% while (my $link = $tasks->Next()) {
+<& OverviewEntry, %ARGS, Root=> $link, Depth => ($Depth+1), MaxDepth => $MaxDepth, Project => $Project &>
+% }
+
+% }
+
+% if ($ARGS{"AddChildOf-".$Root->Id}) {
+<TR>
+<TD><% "&nbsp;"x $Depth|n %><input name="Subject" size="25">
+
+<input type="hidden" name="new-MemberOf" value="<%$Root->id%>">
+<input type="hidden" name="AddChildOf<%$Root->id%>" value="1">
+</TD>
+
+<TD><& /Elements/SelectOwner, Name => 'Owner', Default => $RT::Nobody->id &></TD>
+<TD><& /Elements/SelectStatus, Name => 'Status', Default => 'new' &></TD>
+<TD><input name="Due" size=10></TD>
+<TD><input name="Priority" size=2></TD>
+<TD><input name="TimeWorked" size="3"></TD>
+<TD><input name="TimeLeft" size="3"></TD>
+<TD><input type="submit" name="CreateTask" value="<%loc('Create')%>"></TD>
+</TR>
+%}
+
+% }
+<%ARGS>
+$Depth => 0
+$MaxDepth => 8
+$Root => undef
+$Project => undef
+$Edit => undef
+$EditAll => 0
+</%ARGS>
+
+<%INIT>
+
+my $tasks = RT::Tickets->new($session{'CurrentUser'});
+$tasks->FromSQL('MemberOf = '.$Root->id);
+</%INIT>

Added: RT-ProjectManager/trunk/html/Projects/Elements/SelectProjectTask
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Elements/SelectProjectTask	Thu May 27 21:16:23 2004
@@ -0,0 +1,15 @@
+<SELECT NAME="<%$Name%>">
+<OPTION VALUE="" <% $Default == undef && 'SELECTED' %>>None (Independent Project)</OPTION>
+<& SelectProjectTaskEntry, Root=> $Root, Depth => ($Depth+1), MaxDepth => $MaxDepth, Project => $Project, Default => $Default &>
+</SELECT>
+<%ARGS>
+$Name => 'Task'
+$Default => undef
+$Depth => 0
+$MaxDepth => 12
+$Project => undef
+</%ARGS>
+
+<%INIT>
+my $Root= LoadTicket($Project);
+</%INIT>

Added: RT-ProjectManager/trunk/html/Projects/Elements/SelectProjectTaskEntry
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Elements/SelectProjectTaskEntry	Thu May 27 21:16:23 2004
@@ -0,0 +1,25 @@
+% if ($Root) {
+<OPTION VALUE="<%$Root->id%>"
+% if ($Root->Id == $Default) {
+SELECTED
+% }
+><%"-"x $Depth|n%><%$Root->Subject%>
+</OPTION>
+%# if ($Depth < $MaxDepth) {
+% while (my $link = $tasks->Next()) {
+<& SelectProjectTaskEntry, Root=> $link, Depth => ($Depth+1), MaxDepth => $MaxDepth, Project => $Project, Default => $Default &>
+% }
+%# }
+% }
+<%ARGS>
+$Depth => 0
+$MaxDepth => 12
+$Root => undef
+$Project => undef
+$Default => undef
+</%ARGS>
+
+<%INIT>
+my $tasks = RT::Tickets->new($session{'CurrentUser'});
+$tasks->FromSQL('MemberOf = '. $Root->id);
+</%INIT>

Added: RT-ProjectManager/trunk/html/Projects/Elements/Tabs
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Elements/Tabs	Thu May 27 21:16:23 2004
@@ -0,0 +1,32 @@
+<& /Elements/Tabs, 
+    tabs => $tabs, 
+    actions => $actions, 
+    current_tab => $current_tab, 
+    current_toptab => $current_toptab,
+    Title => $Title &> 
+<%INIT>
+	
+  my $id = $Ticket->id();
+  my $tabs = {
+		 A => { title => 'Overview',
+			path => "Projects/Overview.html?id=".$id,
+		      },
+	      
+	      B => { title => 'Schedule',
+		      path => "Projects/Schedule.html?id=".$id,
+		       },
+	      C => { title => 'Gantt Chart',
+		      path => 'Projects/Gantt.html?id='.$id,
+	     	} 
+	     };
+
+my $actions;
+
+
+</%INIT>
+<%ARGS>
+$Title => loc('Projects')
+$Ticket => undef
+$current_tab => undef
+$current_toptab => 'Projects/index.html'
+</%ARGS>

Added: RT-ProjectManager/trunk/html/Projects/Elements/TicketTabs
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Elements/TicketTabs	Thu May 27 21:16:23 2004
@@ -0,0 +1,39 @@
+<TABLE WIDTH=100% cellspacing=0 cellpadding=3  border=0 BGCOLOR="#333399">
+	  <TR>
+% foreach my $tab (sort keys %{$tabs}) {
+	    <TD ALIGN=CENTER>
+<A 
+% if ($current_tab eq $tabs->{$tab}->{'path'}) {
+class='currenttab'
+% } 
+% else {
+class='inverse'
+% }
+	HREF="<%$RT::WebPath%>/<% $tabs->{$tab}->{'path'}%>?id=<%$id%>&Project=<%$Project%>"><% $tabs->{$tab}->{'title'}%></A>
+	    </TD>
+% }
+	  </TR>
+</TABLE>
+<BR>
+
+<%INIT>
+	
+  my $id = $Ticket->id();
+  my $tabs = {
+		 A => { title => 'Details',
+			path => "Projects/Edit.html",
+		      },
+	      
+	      B => { title => 'History',
+		      path => "Projects/History.html",
+		       },
+	     };
+
+</%INIT>
+
+  
+<%ARGS>
+$Ticket => undef
+$Project => undef
+$current_tab => undef
+</%ARGS>

Added: RT-ProjectManager/trunk/html/Projects/Gantt.html
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Gantt.html	Thu May 27 21:16:23 2004
@@ -0,0 +1,61 @@
+<%ARGS>
+$id => undef
+</%ARGS>
+<%INIT>
+
+my $ProjectObj = LoadTicket($id);
+
+use RT::Projects::Scheduler;
+my $schedule = new RT::Projects::Scheduler;
+
+my ($calendar, $ticketinfo) =$schedule->Build($id);
+
+
+my @dates =  sort (keys %{$calendar});
+my $last = $dates[0]; 		
+my @tasks = sort { 
+		$ticketinfo->{$a}->{'startson'} <=> 
+		$ticketinfo->{$b}->{'startson'} } 
+		keys %{$ticketinfo};
+
+
+my $peoplecolors = {};
+my @colors = qw(ffffcc ffccff ccffff aacccc ccaacc ccccaa aaaa99 
+		aa99aa 99aaaa 999966 996699 669999 666633 663366 336666);
+
+foreach my $task (keys %{$ticketinfo}) {
+
+	#TODO: We should be getting this from Projects::Scheduler. why aren't we?
+
+	$ticketinfo->{$task}->{'ticketobj'} = LoadTicket($task);
+	my $ticket = $ticketinfo->{$task}->{'ticketobj'};
+	$peoplecolors->{$ticket->OwnerObj->Id} = (shift @colors);	
+}
+
+
+
+</%INIT>
+
+<& /Elements/Header, Title => $ProjectObj->Subject . " / Gantt Chart" &>
+<& Elements/Tabs, Ticket => $ProjectObj, current_tab => 'Projects/Gantt.html?id='.$ProjectObj->Id &>
+<TABLE BORDER=1><TR><TD>Subject</TD>
+% foreach my $date (@dates) {
+<TD><%$schedule->{'dates'}->{$date}->{'daymon'}%></TD>
+%	}
+
+</TR>
+
+%foreach my $task (@tasks) {
+
+% my $ticket = $ticketinfo->{$task}->{'ticketobj'};
+	<TR><TD><%$ticket->Subject%> </TD>
+<%"<td></td>" x  ($ticketinfo->{$task}->{'startson'}-1)|n%>
+<td bgcolor="#<%$peoplecolors->{$ticket->OwnerObj->Id}%>" 
+    colspan="<%$ticketinfo->{$task}->{'duration'}%>"><%$ticket->OwnerObj->Name%></td>
+<% "<td></td>"x ($#dates - 
+		   ( $ticketinfo->{$task}->{'startson'} + 
+		     $ticketinfo->{$task}->{'duration'})) |n%>
+</tr>
+% }
+
+</table>

Added: RT-ProjectManager/trunk/html/Projects/History.html
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/History.html	Thu May 27 21:16:23 2004
@@ -0,0 +1,34 @@
+%# $Header: /raid/cvsroot/rt-addons/Projects/html/History.html,v 1.2 2001/11/13 04:25:29 jesse Exp $
+%# Copyright 1996-2000 Jesse Vincent <jesse at fsck.com>
+<& /Elements/Header, Title => "History: ".$TicketObj->Subject, ShowBar => 0 &>
+<div align="right">
+	<font size=-2>
+		[<a href="#close" onClick="window.close();">Close</a>]
+	</font>
+</div>
+<BR> 
+<& Elements/TicketTabs, current_tab => "Projects/History.html", Ticket=> $TicketObj, Project => $Project &>
+
+<& /Ticket/Elements/ShowHistory , Ticket => $TicketObj, ShowHeaders => $ARGS{'ShowHeaders'} , URIFile=> 'History.html', ShowTitleBarCommands => 0, ShowTitle => 0 &> 
+
+
+<%ARGS>
+$id => undef
+$Project => undef
+</%ARGS>
+
+<%INIT>
+
+  
+
+my $TicketObj = LoadTicket ($id);
+
+unless ($TicketObj->CurrentUserHasRight('ShowTicket')) {
+	Abort("No permission to view ticket");
+}
+
+</%INIT>
+
+
+
+

Added: RT-ProjectManager/trunk/html/Projects/Overview.html
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Overview.html	Thu May 27 21:16:23 2004
@@ -0,0 +1,81 @@
+<& /Elements/Header, Title => $ProjectObj->Subject . " / Project Overview" &> 
+<& Elements/Tabs, Ticket => $ProjectObj, current_tab => 'Projects/Overview.html?id='.$ProjectObj->Id &>
+
+<& /Elements/ListActions, actions => \@messages &>
+
+<form method="post" action="Overview.html">
+<input type="hidden" name="Project" value="<%$Project%>">
+<input type="hidden" name="id" value="<%$id%>">
+
+<TABLE WIDTH=100% CELLSPACING=0 BORDER=0 CELLPADDING=2>
+<TR BGCOLOR="#993333">
+<TD CLASS=INVERSE><&|/l&>Task</&></TD>
+<TD CLASS=INVERSE><&|/l&>Owner</&></TD>	
+<TD CLASS=INVERSE><&|/l&>Status</&></TD>	
+<TD CLASS=INVERSE><&|/l&>Due</&></TD>
+<TD CLASS=INVERSE><&|/l&>Priority</&></TD>
+<TD CLASS=INVERSE><&|/l&>Estimate</&></TD>
+<TD CLASS=INVERSE><&|/l&>Left</&></TD>
+<TD>&nbsp;</TD>
+</TR>
+% my $parents = $task->MemberOf;
+% while (my $link = $parents->Next) {
+% unless ($link->TargetObj->MemberOf->First) {
+<TR><TD colspan=7 BGCOLOR="#cccccc">Top</TD></TR>
+% } else {
+<TR><TD colspan=7 BGCOLOR="#cccccc"><a HREF="Overview.html?Project=<%$Project%>&id=<%$link->TargetObj->Id%>">Up</A></TD></TR>
+% }
+<& Elements/OverviewEntry, 
+    Root=> $link->TargetObj, 
+    Depth => 0, 
+    MaxDepth => 0,
+    Project => $Project,
+    %ARGS &>
+% }
+% unless ($task->MemberOf->First) {
+<TR><TD colspan=7 BGCOLOR="#cccccc">Top</TD></TR>
+% }
+<& Elements/OverviewEntry, 
+    Root=> $task, 
+    Depth => 1, 
+    Project => $Project,
+    %ARGS
+    &>
+
+</FORM>
+<%INIT>
+my (@messages);
+my @tix_to_update;
+
+ grep { /^Ticket-(\d+)-/ && push @tix_to_update, $1 } (keys %ARGS);
+foreach my $ticket_id (@tix_to_update) {
+    my $ticket=    LoadTicket($ticket_id);
+    my %ticket_args;
+    grep { /^Ticket-$ticket_id-(.*)$/ && ($ticket_args{$1} = $ARGS{$_})} (keys %ARGS);
+    ProcessTicketDates ( TicketObj =>$ticket, ARGSRef => \%ticket_args);
+    ProcessTicketBasics ( TicketObj =>$ticket, ARGSRef => \%ticket_args);
+}
+
+my $task = LoadTicket($id);
+$Project = $task->Id unless ($Project); 
+my $ProjectObj = LoadTicket($Project);
+
+
+
+if ($ARGS{'CreateTask'}) {
+   
+    $ARGS{'Queue'} = $task->QueueObj->id;
+my     ($new_id, $new_msg) = CreateTicket(%ARGS);
+push (@messages, $new_msg);
+}
+
+
+
+
+</%INIT>
+
+<%ARGS>
+$Project => undef
+$AddChildOf => undef
+$id => undef
+</%ARGS>

Added: RT-ProjectManager/trunk/html/Projects/Schedule.html
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/Schedule.html	Thu May 27 21:16:23 2004
@@ -0,0 +1,62 @@
+<%ARGS>
+$id => undef
+</%ARGS>
+<%INIT>
+
+use RT::Projects::Scheduler;
+
+my $ProjectObj = LoadTicket($id);
+my $schedule = RT::Projects::Scheduler->new();
+
+
+my ($retval, $msg) = $schedule->Build($id);
+unless ($retval) {
+    Abort($msg);
+}
+
+my $calendar = $schedule->Calendar();
+my $ticketinfo = $schedule->TicketInfo();
+
+my @dates =  sort (keys %{$calendar});
+my $last = $dates[0]; 		
+my @tasks = sort { 
+		$ticketinfo->{$a}->{'startson'} <=> 
+		$ticketinfo->{$b}->{'startson'} } 
+		keys %{$ticketinfo};
+
+
+</%INIT>
+<& /Elements/Header, Title => $ProjectObj->Subject . " / Schedule" &>
+<& Elements/Tabs, Ticket => $ProjectObj, current_tab => 'Projects/Schedule.html?id='.$ProjectObj->Id &>
+
+<H1>Schedule by date</H1>
+    
+% foreach my $date ( keys %{$calendar}) {
+<h2><%$schedule->{'dates'}->{$date}->{'daymon'}%></h2>
+<UL>
+% foreach my $person (keys %{$schedule->{'calendar'}->{$date}}) {
+% my $User = new RT::User($session{'CurrentUser'});
+% $User->Load($person);
+% my $Ticket= LoadTicket($schedule->{'calendar'}->{$date}->{$person});
+<LI><%$User->Name%> - Ticket: <%$Ticket->Subject()%>
+%	}
+</UL>
+%    }
+
+<%INIT>
+
+my $peoplecolors = {};
+my @colors = qw(ffffcc ffccff ccffff aacccc ccaacc ccccaa aaaa99 
+		aa99aa 99aaaa 999966 996699 669999 666633 663366 336666);
+
+foreach my $task (keys %{$ticketinfo}) {
+
+	#TODO: We should be getting this from Projects::Scheduler. why aren't we?
+
+	$ticketinfo->{$task}->{'ticketobj'} = LoadTicket($task);
+	my $ticket = $ticketinfo->{$task}->{'ticketobj'};
+	$peoplecolors->{$ticket->OwnerObj->Id} = (shift @colors);	
+}
+
+
+</%INIT>

Added: RT-ProjectManager/trunk/html/Projects/ScheduleByActor.html
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/ScheduleByActor.html	Thu May 27 21:16:23 2004
@@ -0,0 +1,40 @@
+<%ARGS>
+$id => undef
+</%ARGS>
+<%INIT>
+
+my $ProjectObj = LoadTicket($id);
+use RT::Projects::Scheduler;
+my $schedule = new RT::Projects::Scheduler;
+
+my ($calendar, $ticketinfo) =$schedule->Build($id);
+
+
+my @dates =  sort (keys %{$calendar});
+my $last = $dates[0]; 		
+my @tasks = sort { 
+		$ticketinfo->{$a}->{'startson'} <=> 
+		$ticketinfo->{$b}->{'startson'} } 
+		keys %{$ticketinfo};
+
+
+</%INIT>
+<& /Elements/Header, Title => $ProjectObj->Subject . " / Schedule" &>
+<& Elements/Tabs, Ticket => $ProjectObj, current_tab => 'Projects/Schedule.html?id='.$ProjectObj->Id &>
+
+<H1>Schedule by person</H1>
+    
+% foreach my $person ( sort keys %{$schedule->{'calendarbyactor'}}) {
+% my $User = new RT::User($session{'CurrentUser'});
+% $User->Load($person);
+<h2><%$User->Name%></h2>
+<UL>
+% foreach my $date (keys %{$schedule->{'calendarbyactor'}->{$person}}) {
+% my $Ticket= LoadTicket($schedule->{'calendar'}->{$date}->{$person});
+<LI>
+<%$schedule->{'dates'}->{$date}->{'daymon'}%> - 
+<%$Ticket->Subject()%>
+%	}
+</UL>
+%    }
+

Added: RT-ProjectManager/trunk/html/Projects/index.html
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/html/Projects/index.html	Thu May 27 21:16:23 2004
@@ -0,0 +1,98 @@
+<& /Elements/Header, Title => 'Project Listing' &>
+
+<& /Elements/ListActions, actions => \@results &>
+
+<form action="index.html" method="GET">
+<table border=0 cellpadding=0 width=100%>
+
+<div align=right>
+<font size=-2>
+%if ($ShowResolved) {
+[<A HREF="index.html">Hide finished projects</a>]
+% } else {
+[<A HREF="index.html?ShowResolved=1">Show finished projects</a>]
+% }
+</font>
+</div>
+
+<TABLE WIDTH=100% CELLSPACING=0 BORDER=0 CELLPADDING=2>
+<TR BGCOLOR="#993333">
+<TD CLASS=INVERSE>Project</TD>
+<TD CLASS=INVERSE>Owner</TD>
+<TD CLASS=INVERSE>Status</TD>	
+<TD CLASS=INVERSE>Starts</TD>	
+<TD CLASS=INVERSE>Due</TD>
+<TD CLASS=INVERSE>Queue</TD>
+</TR>
+
+
+
+% while (my $project = $projects->Next) {
+<TR>
+<TD><A HREF="Overview.html?id=<%$project->Id%>"><%$project->Subject%></a></TD>
+<TD><%$project->OwnerObj->Name%></TD>
+<TD><%$project->Status%></TD>
+<TD><%$project->StartsObj->AsString%></TD>
+<TD><%$project->DueObj->AsString%></TD>
+<TD><%$project->QueueObj->Name%></TD>
+</TR>
+% }
+<TR><TD bgcolor="#cccccc" COLSPAN=7>Create a new project:</TD></TR>
+<TR>
+<TD><input name="Subject" size=30></TD>
+<TD><& /Elements/SelectOwner, Name => 'Owner'&>
+<TD>open</TD>
+<TD><input name="Starts" size=15></TD>
+<TD><input name="Due" size=15></TD>
+<TD><& /Elements/SelectQueue, Name => 'Queue'&>
+
+</TR>
+
+</TABLE>
+<& /Elements/Submit &>
+</form>
+
+
+<%INIT>
+my @results;
+
+
+if ($Subject) {
+	my $DueObj= new RT::Date($session{'CurrentUser'});
+	$DueObj->Set( Format => 'unknown', Value => $Due);
+
+	my $StartsObj= new RT::Date($session{'CurrentUser'});
+	$StartsObj->Set( Format => 'unknown', Value => $Starts);
+
+	my $newproject = new RT::Ticket($session{'CurrentUser'});
+ 	my ($ticket, $trans, $msg) = $newproject->Create( Queue => $Queue,
+			     Owner => $Owner,
+			     Status => 'open',
+			     Type => 'project',
+			     Due => $DueObj->ISO,
+			     Starts => $StartsObj->ISO,
+			     Subject => $Subject);
+	if ($ticket) {
+		push @results, "New project created with id #$ticket";
+	} else {
+	  	push @results, "Project could not be created: $msg";	
+	}
+}
+
+my $projects = new RT::Tickets($session{'CurrentUser'});
+$projects->LimitType(VALUE => 'project');
+
+unless ($ShowResolved) {
+	$projects->LimitStatus (VALUE => 'resolved',
+				OPERATOR => '!=' );
+}
+
+</%INIT>
+<%ARGS>
+$Subject => undef
+$Starts => undef
+$Due => undef
+$Queue => undef
+$Owner => undef
+$ShowResolved => undef
+</%ARGS>

Added: RT-ProjectManager/trunk/lib/RT/ProjectManager.pm
==============================================================================
--- (empty file)
+++ RT-ProjectManager/trunk/lib/RT/ProjectManager.pm	Thu May 27 21:16:23 2004
@@ -0,0 +1,6 @@
+use strict;
+use warnings;
+
+package RT::ProjectManager;
+
+our $VERSION = "0.01_01";


More information about the Rt-commit mailing list