Index: openacs-4/packages/ec-serial-numbers/ec-serial-numbers.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/ec-serial-numbers.info,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/ec-serial-numbers.info 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,36 @@
+
+
+
+
+ Ecommerce Serial Number Tracking
+ Ecommerce Serial Number Trackings
+ f
+ f
+
+
+
+ postgresql
+
+ Malte Sussdorff
+ This package allows the tracking of serial numbers when a product is bought from the E-Commerce Package. It allows for renewal of serial numbers as well
+ 2005-08-18
+ 0
+ cognovis.de
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/catalog/ec-serial-numbers.en_US.ISO-8859-1.xml
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/catalog/ec-serial-numbers.en_US.ISO-8859-1.xml,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/catalog/ec-serial-numbers.en_US.ISO-8859-1.xml 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,27 @@
+
+
+
+ Categories Administration
+ Cancel and Return
+ Continue with Delete
+ Delete
+ Ecommerce Serial Number Trackings
+ Edit
+ None
+ Serial Number
+ Serial Numbers
+ Add Serial Number
+ Delete Serial Number
+ Edit Serial Number
+ Expiration Date
+ License Key
+ New Serial Number
+ Create New Serial Number
+ Owner
+ Software
+ Start Date
+ Order Number
+ View Serial Number
+
+
+
Index: openacs-4/packages/ec-serial-numbers/sql/postgresql/ec-serial-numbers-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/sql/postgresql/ec-serial-numbers-create.sql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/sql/postgresql/ec-serial-numbers-create.sql 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,20 @@
+--
+-- Ecommerce Serial Number Tracking Package
+--
+-- @author Joe Cooper (joe@virtualmin.com)
+-- @author Timo Hentschel (timo@timohentschel.de)
+-- @creation-date 2005-08-18
+--
+
+
+
+
+create table ec_serial_numbers (
+ serial_id integer constraint ec_serial_numbers_serial_id_pk primary key,
+ license_key varchar(100),
+ start_date date,
+ end_date date,
+ owner_id integer references users(user_id),
+ software_id integer references ec_products(product_id)
+);
+
Index: openacs-4/packages/ec-serial-numbers/sql/postgresql/ec-serial-numbers-drop.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/sql/postgresql/ec-serial-numbers-drop.sql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/sql/postgresql/ec-serial-numbers-drop.sql 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,12 @@
+--
+-- Ecommerce Serial Number Tracking Package
+--
+-- @author Joe Cooper (joe@virtualmin.com)
+-- @author Timo Hentschel (timo@timohentschel.de)
+-- @creation-date 2005-08-18
+--
+
+
+
+drop table ec_serial_numbers;
+
Index: openacs-4/packages/ec-serial-numbers/tcl/sc-sn-install-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/tcl/sc-sn-install-procs.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/tcl/sc-sn-install-procs.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,37 @@
+ad_library {
+ Ecommerce Serial Number Tracking Package install callbacks
+
+ Procedures that deal with installing.
+
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+}
+
+namespace eval sc-sn::install {}
+
+ad_proc -public sc-sn::install::create_install {
+} {
+ Creates the content types and adds the attributes.
+} {
+ content::type::new -content_type {serial_number} -supertype {content_revision} -pretty_name {Serial Number} -pretty_plural {Serial Numbers} -table_name {ec_serial_numbers} -id_column {serial_id}
+
+# Serial Number
+content::type::attribute::new -content_type {serial_number} -attribute_name {license_key} -datatype {string} -pretty_name {License Key} -column_spec {varchar(100)}
+content::type::attribute::new -content_type {serial_number} -attribute_name {start_date} -datatype {date} -pretty_name {Start Date} -column_spec {date}
+content::type::attribute::new -content_type {serial_number} -attribute_name {end_date} -datatype {date} -pretty_name {Expiration Date} -column_spec {date}
+content::type::attribute::new -content_type {serial_number} -attribute_name {owner_id} -datatype {string} -pretty_name {Owner} -column_spec {integer references users(user_id)}
+content::type::attribute::new -content_type {serial_number} -attribute_name {software_id} -datatype {string} -pretty_name {Software} -column_spec {integer references ec_products(product_id)}
+
+}
+
+ad_proc -public sc-sn::install::package_instantiate {
+ -package_id:required
+} {
+ Define folders
+} {
+ # create a content folder
+ set folder_id [content::folder::new -name "ec_serial_numbers_$package_id" -package_id $package_id]
+ # register the allowed content types for a folder
+ content::folder::register_content_type -folder_id $folder_id -content_type {serial_number} -include_subtypes t
+}
Index: openacs-4/packages/ec-serial-numbers/tcl/sc-sn-util-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/tcl/sc-sn-util-procs.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/tcl/sc-sn-util-procs.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,21 @@
+ad_library {
+ Ecommerce Serial Number Tracking util procs
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+}
+
+namespace eval sc-sn::util {}
+
+ad_proc sc-sn::util::folder_id {
+ -package_id:required
+} {
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+
+ Returns the folder_id of the package instance
+} {
+ return [db_string get_folder_id "select folder_id from cr_folders where package_id=:package_id"]
+}
+
Index: openacs-4/packages/ec-serial-numbers/tcl/serial-number-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/tcl/serial-number-procs.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/tcl/serial-number-procs.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,86 @@
+ad_library {
+ Serial Number procs
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+}
+
+namespace eval sc-sn::serial_number {}
+
+ad_proc -public sc-sn::serial_number::new {
+ {-name ""}
+ {-title ""}
+ {-description ""}
+ {-package_id ""}
+ {-license_key ""}
+ {-start_date ""}
+ {-end_date ""}
+ {-owner_id ""}
+ {-software_id ""}
+} {
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+
+ New Serial Number
+} {
+ if {[empty_string_p $package_id]} {
+ set package_id [ad_conn package_id]
+ }
+ set folder_id [sc-sn::util::folder_id -package_id $package_id]
+
+ db_transaction {
+ if {[empty_string_p $name]} {
+ set name [exec uuidgen]
+ }
+ set item_id [content::item::new -parent_id $folder_id -content_type {serial_number} -name $name -title $title]
+
+ set new_id [content::revision::new \
+ -item_id $item_id \
+ -content_type {serial_number} \
+ -title $title \
+ -description $description \
+ -attributes [list \
+ [list license_key $license_key] \
+ [list start_date $start_date] \
+ [list end_date $end_date] \
+ [list owner_id $owner_id] \
+ [list software_id $software_id] ] ]
+ }
+
+ return $new_id
+}
+
+ad_proc -public sc-sn::serial_number::edit {
+ -serial_id:required
+ {-title ""}
+ {-description ""}
+ {-license_key ""}
+ {-start_date ""}
+ {-end_date ""}
+ {-owner_id ""}
+ {-software_id ""}
+} {
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+
+ Edit Serial Number
+} {
+ db_transaction {
+ set new_rev_id [content::revision::new \
+ -item_id $serial_id \
+ -content_type {serial_number} \
+ -title $title \
+ -description $description \
+ -attributes [list \
+ [list license_key $license_key] \
+ [list start_date $start_date] \
+ [list end_date $end_date] \
+ [list owner_id $owner_id] \
+ [list software_id $software_id] ] ]
+ }
+
+ return $new_rev_id
+}
+
Index: openacs-4/packages/ec-serial-numbers/templates/install.sh
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/templates/install.sh,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/templates/install.sh 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,141 @@
+#!/bin/sh
+# virtualmin-install.sh
+# Copyright 2005 Virtualmin, Inc.
+# Simple script to grab the virtualmin-release and virtualmin-base packages.
+# The packages do all of the hard work, so this script can be small and
+# lazy.
+
+LANG=
+export LANG
+
+SERIAL=$SERIAL
+KEY=$KEY
+VER=2.74
+arch=i386 # XXX need to detect x86_64
+
+echo "***********************************************************************"
+echo "* Welcome to the Virtualmin Professional installer, version $VER *"
+echo "***********************************************************************"
+echo ""
+sleep 3
+
+# Check for wget or curl
+printf "Checking for curl or wget..."
+if [ -x "/usr/bin/curl" ]; then
+ download="/usr/bin/curl -O"
+elif [ -x "/usr/bin/wget" ]; then
+ download="/usr/bin/wget"
+else
+ echo "No web download program available: Please install curl or wget"
+ echo "and try again."
+ exit 1
+fi
+printf "found $download\n"
+
+# Checking for perl
+printf "Checking for perl..."
+if [ -x "/usr/bin/perl" ]; then
+ perl="/usr/bin/perl"
+elif [ -x "/usr/local/bin/perl" ]; then
+ perl="/usr/local/bin/perl"
+else
+ echo "Perl was not found on your system: Please install perl and try again"
+ exit 1
+fi
+printf "found $perl\n"
+
+# Only root can run this
+id | grep "uid=0(" >/dev/null
+if [ $? != "0" ]; then
+ uname -a | grep -i CYGWIN >/dev/null
+ if [ $? != "0" ]; then
+ echo "ERROR: The Virtualmin install script must be run as root";
+ echo "";
+ exit 1;
+ fi
+fi
+
+# Insert the serial number and password into /etc/virtualmin-license
+echo "SerialNumber=$SERIAL" > /etc/virtualmin-license
+echo "LicenseKey=$KEY" >> /etc/virtualmin-license
+
+# Find temp directory
+if [ "$tempdir" = "" ]; then
+ if [ -e "/tmp/.virtualmin" ]; then
+ rm -rf /tmp/.virtualmin
+ fi
+ tempdir=/tmp/.virtualmin
+ mkdir $tempdir
+fi
+
+# Detecting the OS
+# Grab the Webmin oschooser.pl script
+mkdir $tempdir/files
+srcdir=$tempdir/files
+cd $srcdir
+if $download http://$SERIAL:$KEY@software.virtualmin.com/lib/oschooser.pl
+then continue
+else exit 1
+fi
+if $download http://$SERIAL:$KEY@software.virtualmin.com/lib/os_list.txt
+then continue
+else exit 1
+fi
+cd ..
+
+# Ask for operating system type
+echo "***********************************************************************"
+if [ "$os_type" = "" ]; then
+ if [ "$autoos" = "" ]; then
+ autoos=2
+ fi
+ $perl "$srcdir/oschooser.pl" "$srcdir/os_list.txt" $tempdir/$$.os $autoos
+ if [ $? != 0 ]; then
+ exit $?
+ fi
+ . $tempdir/$$.os
+ rm -f $tempdir/$$.os
+ fi
+echo "Operating system name: $real_os_type"
+echo "Operating system version: $real_os_version"
+echo ""
+
+# Grab virtualmin-release from the server
+# XXX:Needs to choose RPM/deb/ebuild/whatever based on OS
+echo "Downloading virtualmin-release package for $real_os_type $real_os_version..."
+if $download http://$SERIAL:$KEY@software.virtualmin.com/$os_type/$os_version/$arch/virtualmin-release-latest.noarch.rpm
+then continue
+else exit
+fi
+
+# Install it using the package manager
+echo "Installing virtualmin-release..."
+if rpm -Uvh virtualmin-release-latest.noarch.rpm
+then continue
+else exit
+fi
+
+# Use apt-get, yum, or up2date to install everything else
+if [ $os_type = "fedora" ]; then
+ install="/usr/bin/yum -y install"
+elif [ $os_type = "rhel" ]; then
+ install="/usr/bin/up2date -i"
+elif [ $os_type = "suse" ]; then
+ # We need to grab and install yum here...yast has crappy dep resolution
+ rpm -Uvh http://software.virtualmin.com/suse/extras/yum-latest.noarch.rpm
+ install="/usr/bin/yum -y install"
+elif [ $os_type = "mandriva" ]; then
+ install="/usr/bin/urpmi"
+else
+ echo "Your OS is not currently supported by this installer. Please contact us at"
+ echo "support@virtualmin.com to let us know what OS you'd like to install Virtualmin"
+ echo "Professional on, and we'll try to help."
+ exit 1
+fi
+
+echo "Installing Virtualmin and all related packages now using the command:"
+echo "$install virtualmin-base"
+
+$install virtualmin-base
+
+echo "Installation completed."
Index: openacs-4/packages/ec-serial-numbers/www/download.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/download.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/download.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,47 @@
+ad_page_contract {
+ List of Serial Numbers.
+
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+} {
+ serial_id:required
+ software_id:optional
+} -properties {
+ context_bar:onevalue
+ page_title:onevalue
+}
+
+set page_title "[_ ec-serial-numbers.serial_number_2]"
+set context_bar [ad_context_bar $page_title]
+set package_id [ad_conn package_id]
+
+if {[exists_and_not_null software_id]} {
+ set file_name "/web/devel/packages/ec-serial-numbers/templates/install-${software_id}.sh"
+} else {
+ set file_name "/web/devel/packages/ec-serial-numbers/templates/install.sh"
+}
+
+set file [open $file_name]
+fconfigure $file -translation binary
+set __the_body__ [read $file]
+set __the_body__ [encoding convertfrom utf-8 $__the_body__]
+close $file
+
+# Admins can get license keys from any user.
+set user_id [ad_conn user_id]
+set admin_p [acs_user::site_wide_admin_p -user_id $user_id]
+
+if {$admin_p} {
+ set user_where_clause ""
+} else {
+ set user_where_clause "and user_id = :user_id"
+}
+
+if {[db_0or1row get_key "select license_key from ec_serial_numbers where serial_id = : serial_id $user_where_clause"]} {
+
+ ns_set put [ad_conn outputheaders] Content-Disposition "attachment;filename=install.sh"
+ ns_return 200 "text/plain" "$csv_text"
+} else {
+ ad_return_error "No such serial number" "We are sorry but we don't have the serial number on record"
+}
\ No newline at end of file
Index: openacs-4/packages/ec-serial-numbers/www/index.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/index.adp,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/index.adp 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,11 @@
+
+@page_title;noquote@
+@context_bar;noquote@
+
+#ec-serial-numbers.admin_categories#
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/www/index.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/index.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/index.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,20 @@
+ad_page_contract {
+ Index page.
+
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+} {
+} -properties {
+ context_bar:onevalue
+ page_title:onevalue
+}
+
+set page_title "[_ ec-serial-numbers.ec_serial_numbers]"
+set context_bar [ad_context_bar]
+set package_id [ad_conn package_id]
+set categories_node_id [db_string get_category_node_id {}]
+set categories_url [site_node::get_url -node_id $categories_node_id]
+
+ad_return_template
+
Index: openacs-4/packages/ec-serial-numbers/www/index.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/index.xql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/index.xql 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+ select n.node_id
+ from site_nodes n, site_nodes top, apm_packages p
+ where top.parent_id is null
+ and n.parent_id = top.node_id
+ and p.package_id = n.object_id
+ and p.package_key = 'categories'
+
+
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/www/message.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/message.adp,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/message.adp 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,39 @@
+
+
+@title@
+@context@
+
+
+
+
+
+
+@party_id@
+
+@error_message;noquote@
+
+
+comment_add.comment
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/www/message.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/message.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/message.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,250 @@
+ad_page_contract {
+ List and manage contacts.
+
+ @author Matthew Geddert openacs@geddert.com
+ @creation-date 2004-07-28
+ @cvs-id $Id: message.tcl,v 1.1 2005/08/23 06:14:25 maltes Exp $
+} {
+ {subject_id:integer,multiple,optional}
+ {subject_ids:optional}
+ {message_type "email"}
+ {message:optional}
+ {header_id:integer ""}
+ {footer_id:integer ""}
+ {return_url "./"}
+ {object_id:integer,multiple,optional}
+ {file_ids ""}
+ {item_id:integer ""}
+ {signature_id:integer ""}
+}
+
+if { [exists_and_not_null message] && ![exists_and_not_null message_type] } {
+ set message_type [lindex [split $message "."] 0]
+ set item_id [lindex [split $message "."] 1]
+}
+
+if { [exists_and_not_null party_id] } {
+ set party_ids [list]
+ foreach party_id $party_id {
+ lappend party_ids $party_id
+ }
+}
+
+set party_count [llength $party_ids]
+set title "[_ contacts.Messages]"
+set user_id [ad_conn user_id]
+set context [list $title]
+
+set recipients [list]
+foreach party_id $party_ids {
+ set contact_name [contact::name -party_id $party_id]
+ set contact_url [contact::url -party_id $party_id]
+ set contact_link "${contact_name}"
+ set sort_key [string toupper $contact_name]
+ # Check if the party has a valid e-mail address we can send to
+ set email_p [contact::message::email_address_exists_p -party_id $party_id]
+ set letter_p [contact::message::mailing_address_exists_p -party_id $party_id]
+ lappend recipients [list $contact_name $party_id $contact_link $email_p $letter_p]
+}
+set sorted_recipients [ams::util::sort_list_of_lists -list $recipients]
+set recipients [list]
+set invalid_recipients [list]
+set party_ids [list]
+set invalid_party_ids [list]
+
+foreach recipient $sorted_recipients {
+ set party_id [lindex $recipient 1]
+ set contact_link [lindex $recipient 2]
+ set email_p [lindex $recipient 3]
+ set letter_p [lindex $recipient 4]
+ if { $message_type == "letter" } {
+ if { $letter_p } {
+ lappend party_ids $party_id
+ lappend recipients $contact_link
+ } else {
+ lappend invalid_party_ids $party_id
+ lappend invalid_recipients $contact_link
+ }
+ } elseif { $message_type == "email" } {
+ if { $email_p } {
+ lappend party_ids $party_id
+ lappend recipients $contact_link
+ } else {
+ lappend invalid_party_ids $party_id
+ lappend invalid_recipients $contact_link
+ }
+ } else {
+ if { $email_p || $letter_p } {
+ lappend party_ids $party_id
+ lappend recipients $contact_link
+ } else {
+ lappend invalid_party_ids $party_id
+ lappend invalid_recipients $contact_link
+ }
+ }
+}
+
+set recipients [join $recipients ", "]
+set invalid_recipients [join $invalid_recipients ", "]
+if { [llength $invalid_recipients] > 0 } {
+ switch $message_type {
+ letter {
+ set error_message [_ contacts.lt_You_cannot_send_a_letter_to_invalid_recipients]
+ }
+ email {
+ set error_message [_ contacts.lt_You_cannot_send_an_email_to_invalid_recipients]
+ }
+ default {
+ set error_message [_ contacts.lt_You_cannot_send_a_message_to_invalid_recipients]
+ }
+ }
+ if { $party_ids != "" } {
+ util_user_message -html -message $error_message
+ }
+}
+
+if {[exists_and_not_null object_id]} {
+ foreach object $object_id {
+ if {[fs::folder_p -object_id $object]} {
+ db_foreach files "select r.revision_id
+ from cr_revisions r, cr_items i
+ where r.item_id = i.item_id and i.parent_id = :object" {
+ lappend file_list $revision_id
+ }
+ } else {
+ lappend file_list $object
+ }
+ }
+}
+
+if {[exists_and_not_null file_list]} {
+ set file_ids [join $file_list ","]
+}
+
+set form_elements {
+ file_ids:text(hidden)
+ party_ids:text(hidden)
+ return_url:text(hidden)
+ {to:text(inform),optional {label "[_ contacts.Recipients]"} {value $recipients}}
+}
+
+
+if { ![exists_and_not_null message_type] } {
+
+ set message_type_options [ams::util::localize_and_sort_list_of_lists \
+ -list [db_list_of_lists get_message_types { select pretty_name, message_type from contact_message_types }] \
+ ]
+
+ set message_options [list]
+ foreach op $message_type_options {
+ set message_type [lindex $op 1]
+ if {$message_type == "letter" || $message_type == "email"} {
+ lappend message_options [list "-- [_ contacts.New] [lindex $op 0] --" $message_type]
+ } else {
+ set ${message_type}_options [list [list [_ contacts.--none--] ""]]
+ }
+
+ # set email_text and letter_text and others in the future
+ set "${message_type}_text" [lindex $op 0]
+ }
+
+ set public_text [_ contacts.Public]
+ set package_id [ad_conn package_id]
+
+ db_foreach get_messages {
+ select CASE WHEN owner_id = :package_id THEN :public_text ELSE contact__name(owner_id) END as public_display,
+ title,
+ to_char(item_id,'FM9999999999999999999999') as item_id,
+ message_type
+ from contact_messages
+ where owner_id in ( select party_id from parties )
+ or owner_id = :package_id
+ order by CASE WHEN owner_id = :package_id THEN '000000000' ELSE upper(contact__name(owner_id)) END, message_type, upper(title)
+ } {
+ if {$message_type == "letter" || $message_type == "email"} {
+ lappend ${message_type}_options [list "$public_display [set ${message_type}_text]:$title" "${message_type}.$item_id"]
+ } else {
+ lappend ${message_type}_options [list "$public_display:$title" "$item_id"]
+ }
+ }
+ set message_options [concat \
+ $message_options \
+ $letter_options \
+ $email_options]
+
+ if {[exists_and_not_null header_options]} {
+ lappend form_elements [list \
+ header_id:text(select) \
+ [list label "[_ contacts.Header]"] \
+ [list options $header_options] \
+ ]
+ }
+
+ lappend form_elements [list \
+ message:text(select) \
+ [list label "[_ contacts.Message]"] \
+ [list options $message_options] \
+ ]
+
+ set message_type ""
+ set title [_ contacts.create_a_message]
+
+} else {
+ set title [_ contacts.create_$message_type]
+}
+
+set context [list $title]
+
+if { [string is false [exists_and_not_null message]] } {
+ set signature_list [list [list [_ contacts.--none--] ""]]
+ set reset_title $title
+ set reset_signature_id $signature_id
+ db_foreach signatures "select title, signature_id, default_p
+ from contact_signatures
+ where party_id = :user_id
+ order by default_p, upper(title), upper(signature)" {
+ lappend signature_list [list $title $signature_id]
+ if { $default_p == "t" } {
+ set default_signature_id $signature_id
+ }
+ }
+ set title $reset_title
+ set signature_id $reset_signature_id
+ append form_elements {
+ {signature_id:text(select)
+ {label "[_ contacts.Signature]"}
+ {options {$signature_list}}
+ }
+ }
+
+}
+
+if {[exists_and_not_null footer_options]} {
+ lappend form_elements [list \
+ footer_id:text(select) \
+ [list label "[_ contacts.Footer]"] \
+ [list options $footer_options] \
+ ]
+}
+
+set edit_buttons [list [list "[_ contacts.Next]" create]]
+
+# the message form will rest party_ids so we need to carry it over
+set new_party_ids $party_ids
+ad_form -action message \
+ -name message \
+ -cancel_label "[_ contacts.Cancel]" \
+ -cancel_url $return_url \
+ -edit_buttons $edit_buttons \
+ -form $form_elements \
+ -on_request {
+ if { [exists_and_not_null default_signature_id] } {
+ set signature_id $default_signature_id
+ } else {
+ set signature_id ""
+ }
+ } -new_request {
+ } -edit_request {
+ } -on_submit {
+ }
+set party_ids $new_party_ids
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-ae.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-ae.adp,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-ae.adp 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,8 @@
+
+@page_title;noquote@
+@context_bar;noquote@
+
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-ae.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-ae.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-ae.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,100 @@
+ad_page_contract {
+ Form to add/edit Serial Number.
+
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+} {
+ serial_id:integer,optional
+ {__new_p 0}
+ {mode edit}
+} -properties {
+ context_bar:onevalue
+ page_title:onevalue
+}
+
+set has_submit 0
+if {![info exists serial_id] || $__new_p} {
+ set page_title "[_ ec-serial-numbers.serial_number_Add]"
+ set _serial_id 0
+} else {
+ if {$mode == "edit"} {
+ set page_title "[_ ec-serial-numbers.serial_number_Edit]"
+ } else {
+ set page_title "[_ ec-serial-numbers.serial_number_View]"
+ set has_submit 1
+ }
+ set _serial_id $serial_id
+}
+
+set context_bar [ad_context_bar [list "serial-number-list" "[_ ec-serial-numbers.serial_number_2]"] $page_title]
+set package_id [ad_conn package_id]
+
+set owner_id_options [list]
+set software_id_options [list]
+
+ad_form -name serial_number_form -action serial-number-ae -mode $mode -has_submit $has_submit -form {
+ {serial_id:key}
+}
+
+ad_form -extend -name serial_number_form -form {
+ {title:text {label "[_ ec-serial-numbers.serial_number_Title]"} {html {size 80 maxlength 1000}} {help_text "[_ ec-serial-numbers.serial_number_Title_help]"}}
+}
+
+if {![empty_string_p [category_tree::get_mapped_trees $package_id]]} {
+ category::ad_form::add_widgets -container_object_id $package_id -categorized_object_id $_serial_id -form_name serial_number_form
+}
+
+ad_form -extend -name serial_number_form -form {
+ {license_key:text {label "[_ ec-serial-numbers.serial_number_license_key]"} {html {size 80 maxlength 200}} {help_text "[_ ec-serial-numbers.serial_number_license_key_help]"}}
+ {start_date:date(date),to_sql(ansi),from_sql(ansi) {label "[_ ec-serial-numbers.serial_number_start_date]"} {help_text "[_ ec-serial-numbers.serial_number_start_date_help]"}}
+ {end_date:date(date),to_sql(ansi),from_sql(ansi) {label "[_ ec-serial-numbers.serial_number_end_date]"} {help_text "[_ ec-serial-numbers.serial_number_end_date_help]"}}
+ {owner_id:text(inform) {label "[_ ec-serial-numbers.serial_number_owner_id]"} {options $owner_id_options} {help_text "[_ ec-serial-numbers.serial_number_owner_id_help]"}}
+ {software_id:text(inform) {label "[_ ec-serial-numbers.serial_number_software_id]"} {options $software_id_options} {help_text "[_ ec-serial-numbers.serial_number_software_id_help]"}}
+} -new_request {
+ set title ""
+ set license_key ""
+ set start_date ""
+ set end_date ""
+ set owner_id ""
+ set software_id ""
+} -edit_request {
+ db_1row get_data {}
+} -on_submit {
+ set category_ids [category::ad_form::get_categories -container_object_id $package_id]
+} -new_data {
+ db_transaction {
+ set new_serial_id [sc-sn::serial_number::new \
+ -title $title \
+ -license_key $license_key \
+ -start_date $start_date \
+ -end_date $end_date \
+ -owner_id $owner_id \
+ -software_id $software_id ]
+
+ if {[exists_and_not_null category_ids]} {
+ category::map_object -object_id $new_serial_id $category_ids
+ }
+ }
+} -edit_data {
+ db_transaction {
+ set new_serial_id [sc-sn::serial_number::edit \
+ -serial_id $serial_id \
+ -title $title \
+ -license_key $license_key \
+ -start_date $start_date \
+ -end_date $end_date \
+ -owner_id $owner_id \
+ -software_id $software_id ]
+
+ if {[exists_and_not_null category_ids]} {
+ category::map_object -object_id $new_serial_id $category_ids
+ }
+ }
+} -after_submit {
+ ad_returnredirect serial-number-list
+ ad_script_abort
+}
+
+ad_return_template
+
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-ae.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-ae.xql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-ae.xql 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+ select r.title, t.license_key, t.start_date, t.end_date, t.owner_id, t.software_id
+ from ec_serial_numbers t, cr_revisions r, cr_items i
+ where r.revision_id = t.serial_id
+ and i.latest_revision = r.revision_id
+ and r.item_id = :serial_id
+
+
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-delete.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-delete.adp,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-delete.adp 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,8 @@
+
+@page_title;noquote@
+@context_bar;noquote@
+
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-delete.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-delete.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-delete.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,34 @@
+ad_page_contract {
+ Delete Serial Number.
+
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+} {
+ serial_id
+} -properties {
+ context_bar:onevalue
+ page_title:onevalue
+}
+
+set page_title "[_ ec-serial-numbers.serial_number_Delete]"
+set context_bar [ad_context_bar [list "serial-number-list" "[_ ec-serial-numbers.serial_number_2]"] $page_title]
+
+set confirm_options [list [list "[_ ec-serial-numbers.continue_with_delete]" t] [list "[_ ec-serial-numbers.cancel_and_return]" f]]
+
+ad_form -name delete_confirm -action serial-number-delete -export { serial_id } -form {
+ {section_id:key}
+ {title:text(inform) {label "[_ ec-serial-numbers.Delete]"}}
+ {confirmation:text(radio) {label " "} {options $confirm_options} {value f}}
+} -select_query_name {title} \
+-on_submit {
+ if {$confirmation} {
+ db_dml mark_deleted {}
+ }
+} -after_submit {
+ ad_returnredirect "serial-number-list"
+ ad_script_abort
+}
+
+ad_return_template
+
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-delete.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-delete.xql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-delete.xql 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+ select title
+ from cr_revisions
+ where revision_id = :serial_id
+
+
+
+
+
+
+
+ update cr_items
+ set latest_revision = null
+ where latest_revision = :serial_id
+
+
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-list.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-list.adp,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-list.adp 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,8 @@
+
+@page_title;noquote@
+@context_bar;noquote@
+
+
+
+
+
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-list.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-list.tcl,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-list.tcl 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,102 @@
+ad_page_contract {
+ List of Serial Numbers.
+
+ @author Joe Cooper (joe@virtualmin.com)
+ @author Timo Hentschel (timo@timohentschel.de)
+ @creation-date 2005-08-18
+} {
+ orderby:optional
+ owner_id:optional
+ software_id:optional
+ page:optional
+ {page_size "25"}
+} -properties {
+ context_bar:onevalue
+ page_title:onevalue
+}
+
+set page_title "[_ ec-serial-numbers.serial_number_2]"
+set context_bar [ad_context_bar $page_title]
+set package_id [ad_conn package_id]
+
+set actions [list "[_ ec-serial-numbers.serial_number_New]" serial-number-ae "[_ ec-serial-numbers.serial_number_New2]"]
+
+set orderbys {
+ default_value end_date,asc
+ owner_name {
+ label {[_ ec-serial-numbers.serial_number_owner_id]}
+ orderby last_name
+ default_direction asc
+ }
+ end_date {
+ label {[_ ec-serial-numbers.serial_number_end_date]}
+ orderby {t.end_date}
+ default_direction asc
+ }
+ title {
+ label {[_ ec-serial-numbers.serial_number_Title]}
+ orderby title
+ default_direction asc
+ }
+}
+
+set software_options [db_list_of_lists software_options "select product_name,product_id from ec_products where no_shipping_avail_p = 't'"]
+set filters {
+ owner_id {
+ where_clause {t.owner_id = :owner_id}
+ default_value ""
+ }
+ software_id {
+ where_clause {t.software_id = :software_id}
+ values $software_options
+ default_value ""
+ }
+}
+
+template::list::create \
+ -name serial_number \
+ -key serial_id \
+ -no_data "[_ ec-serial-numbers.None]" \
+ -elements {
+ title {
+ label {[_ ec-serial-numbers.serial_number_Title]}
+ link_url_eval {[export_vars -base "serial-number-ae" {{serial_id $item_id} {mode display}}]}
+ }
+ serial_id {
+ label {[_ ec-serial-numbers.serial_number]}
+ }
+ license_key {
+ label {[_ ec-serial-numbers.serial_number_license_key]}
+ }
+ start_date {
+ label {[_ ec-serial-numbers.serial_number_start_date]}
+ }
+ end_date {
+ label {[_ ec-serial-numbers.serial_number_end_date]}
+ }
+ owner_name {
+ label {[_ ec-serial-numbers.serial_number_owner_id]}
+ }
+ product_name {
+ label {[_ ec-serial-numbers.serial_number_software_id]}
+ }
+ } -actions $actions \
+ -orderby $orderbys \
+ -filters $filters \
+ -page_size $page_size \
+ -page_flush_p 0 \
+ -page_query_name serial_number_pagination
+
+db_multirow -extend {edit_link delete_link owner_name product_name} serial_number serial_number {} {
+ set edit_link [export_vars -base "serial-number-ae" {{serial_id $item_id}}]
+ set delete_link [export_vars -base "serial-number-delete" {{serial_id $item_id}}]
+ set owner_name "$first_names $last_name"
+ if {[exists_and_not_null software_id]} {
+ set product_name [ec_product_name $software_id]
+ } else {
+ set product_name ""
+ }
+}
+
+ad_return_template
+
Index: openacs-4/packages/ec-serial-numbers/www/serial-number-list.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/ec-serial-numbers/www/serial-number-list.xql,v
diff -u -N
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/ec-serial-numbers/www/serial-number-list.xql 23 Aug 2005 06:14:25 -0000 1.1
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+ select t.*, cr.title, ci.item_id, first_names, last_name
+ from cr_folders cf, cr_items ci, cr_revisions cr, ec_serial_numbers t left outer join persons on (persons.person_id = t.owner_id)
+ where cr.revision_id = ci.latest_revision
+ and t.serial_id = cr.revision_id
+ and ci.parent_id = cf.folder_id
+ and cf.package_id = :package_id
+ [template::list::filter_where_clauses -and -name "serial_number"]
+ and [template::list::page_where_clause -name "serial_number"]
+ [template::list::orderby_clause -orderby -name "serial_number"]
+
+
+
+
+
+
+
+ select t.*, cr.title, ci.item_id, first_names, last_name
+ from cr_folders cf, cr_items ci, cr_revisions cr, ec_serial_numbers t left outer join persons on (persons.person_id = t.owner_id)
+ where cr.revision_id = ci.latest_revision
+ and t.serial_id = cr.revision_id
+ and ci.parent_id = cf.folder_id
+ and cf.package_id = :package_id
+ [template::list::filter_where_clauses -and -name "serial_number"]
+ [template::list::orderby_clause -orderby -name "serial_number"]
+
+
+
+
+
+