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"] + + + + + +