Index: openacs-4/packages/scholarship-fund/tcl/scholarship-funds-install-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/scholarship-fund/tcl/scholarship-funds-install-procs.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/scholarship-fund/tcl/scholarship-funds-install-procs.tcl 19 Jun 2005 06:05:09 -0000 1.2
+++ openacs-4/packages/scholarship-fund/tcl/scholarship-funds-install-procs.tcl 3 Aug 2005 22:58:58 -0000 1.3
@@ -41,6 +41,13 @@
-pretty_plural "Account Codes" \
-column_spec "varchar(200)"
+ content::type::attribute::new \
+ -content_type scholarship_fund \
+ -attribute_name "amount" \
+ -datatype text \
+ -pretty_name "Amount in Fund" \
+ -pretty_plural "Amount in Fund" \
+ -column_spec "float"
}
ad_proc -private sf::install::after_instantiate {
@@ -72,3 +79,35 @@
ns_log Warning "registered the content type"
}
+ad_proc -private sf::install::after_upgrade {
+ -from_version_name:required
+ -to_version_name:required
+} {
+ After upgrade callback
+
+ @author Roel Canicula (roelmc@pldtdsl.net)
+ @creation-date 2005-08-04
+
+ @param from_version_name
+
+ @param to_version_name
+
+ @return
+
+ @error
+} {
+ apm_upgrade_logic \
+ -from_version_name $from_version_name \
+ -to_version_name $to_ersion_name \
+ -spec {
+ 0.1d 0.1d1 {
+ content::type::attribute::new \
+ -content_type scholarship_fund \
+ -attribute_name "amount" \
+ -datatype text \
+ -pretty_name "Amount in Fund" \
+ -pretty_plural "Amount in Fund" \
+ -column_spec "float"
+ }
+ }
+}
Index: openacs-4/packages/scholarship-fund/www/fund-add-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/scholarship-fund/www/fund-add-edit.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/scholarship-fund/www/fund-add-edit.tcl 19 Jun 2005 06:05:09 -0000 1.2
+++ openacs-4/packages/scholarship-fund/www/fund-add-edit.tcl 3 Aug 2005 22:58:58 -0000 1.3
@@ -37,12 +37,13 @@
ad_form -name fund-add-edit \
-form {
item_id:key
- title:text
- description:text(textarea)
- account_code:text
+ {title:text {label Title}}
+ {description:text(textarea) {label Description}}
+ {account_code:text {label "Account Code"}}
+ {amount:float {label "Amount in Fund"}}
} -edit_request {
# get existing fund info
- db_1row get_fund "select sf.title, sf.description, sf.account_code from scholarship_fundi sf, cr_items ci where sf.revision_id=ci.live_revision and sf.item_id=:item_id"
+ db_1row get_fund "select sf.title, sf.description, sf.account_code, sf.amount from scholarship_fundi sf, cr_items ci where sf.revision_id=ci.live_revision and sf.item_id=:item_id"
} -new_data {
#add fund
content::item::new \
@@ -53,15 +54,17 @@
-description $description \
-content_type scholarship_fund \
-is_live t \
- -attributes [list [list account_code $account_code]]
+ -attributes [list [list account_code $account_code] \
+ [list amount $amount]]
} -edit_data {
#update fund
content::revision::new \
-item_id $item_id \
-title $title \
-description $description \
- -attributes [list [list account_code $account_code]] \
+ -attributes [list [list account_code $account_code] \
+ [list amount $amount]] \
-is_live t
} -after_submit {
Index: openacs-4/packages/scholarship-fund/www/index.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/scholarship-fund/www/index.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/scholarship-fund/www/index.tcl 19 Jun 2005 06:05:09 -0000 1.2
+++ openacs-4/packages/scholarship-fund/www/index.tcl 3 Aug 2005 22:58:58 -0000 1.3
@@ -44,6 +44,7 @@
-elements {
title { label "Title" link_url_col one_url }
description { label "Description" }
+ amount { label "Amount in Fund" }
actions {
label "Actions"
display_template {
Index: openacs-4/packages/scholarship-fund/www/one-fund.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/scholarship-fund/www/one-fund.adp,v
diff -u -r1.1 -r1.2
--- openacs-4/packages/scholarship-fund/www/one-fund.adp 31 May 2005 22:08:03 -0000 1.1
+++ openacs-4/packages/scholarship-fund/www/one-fund.adp 3 Aug 2005 22:58:58 -0000 1.2
@@ -3,7 +3,10 @@
@header_stuff@
@context@
@focus@
+
+
-@fund.title@
-@fund.description@
-@fund.account_code@
\ No newline at end of file
+
+
+
+
\ No newline at end of file
Index: openacs-4/packages/scholarship-fund/www/one-fund.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/scholarship-fund/www/one-fund.tcl,v
diff -u -r1.2 -r1.3
--- openacs-4/packages/scholarship-fund/www/one-fund.tcl 19 Jun 2005 06:05:09 -0000 1.2
+++ openacs-4/packages/scholarship-fund/www/one-fund.tcl 3 Aug 2005 22:58:58 -0000 1.3
@@ -32,6 +32,42 @@
set edit_url [export_vars -base "fund-add-edit" {item_id}]
+ad_form -name one -mode display -export { item_id } -has_edit 1 -form {
+ {title:text {label "Fund Title"}}
+ {description:text(textarea) {label "Description"}}
+ {account_code:text {label "Account Code"}}
+ {amount:text {label "Amount"}}
+} -on_request {
+ db_1row get_fund "select sf.title, sf.description, sf.account_code, sf.amount from scholarship_fundi sf, cr_items ci where sf.revision_id=ci.live_revision and sf.item_id=:item_id"
+}
+
+template::list::create \
+ -name grants \
+ -multirow grants \
+ -no_data "No grants from this fund" \
+ -actions [list Grant scholarship-grant?fund_id=$fund(fund_id) Grant] \
+ -elements {
+ person__name {
+ label "User"
+ }
+ grant_date {
+ label "Date Granted"
+ }
+ grant_amount {
+ label "Amount"
+ }
+ }
+
+db_multirow grants grants {
+ select person__name(user_id), to_char(grant_date, 'Month dd, yyyy hh:miam') as grant_date, grant_amount
+ from scholarship_fund_grants
+ where fund_id in (select fund_id
+ from scholarship_fundi
+ where item_id = :item_id)
+ group by person__name, grant_date, grant_amount
+ order by scholarship_fund_grants.grant_date
+}
+
set page_title "One Scholarship Fund"
set context [list $page_title]
set header_stuff ""
Index: openacs-4/packages/scholarship-fund/www/scholarship-grant.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/scholarship-fund/www/scholarship-grant.adp,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/scholarship-fund/www/scholarship-grant.adp 3 Aug 2005 22:58:58 -0000 1.1
@@ -0,0 +1,11 @@
+
+ Grant Scholarship
+ {Grant Scholarship}
+
+
+ Detailed search results:
+
+
+
+
+
\ No newline at end of file
Index: openacs-4/packages/scholarship-fund/www/scholarship-grant.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/scholarship-fund/www/scholarship-grant.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/scholarship-fund/www/scholarship-grant.tcl 3 Aug 2005 22:58:58 -0000 1.1
@@ -0,0 +1,181 @@
+# packages/scholarship-fund/www/scholarship-grant.tcl
+
+ad_page_contract {
+
+ Grant scholarship to user
+
+ @author Roel Canicula (roelmc@pldtdsl.net)
+ @creation-date 2005-08-03
+ @arch-tag: b6e25b4c-1f20-4710-b9ce-bd11658bba7d
+ @cvs-id $Id: scholarship-grant.tcl,v 1.1 2005/08/03 22:58:58 roelc Exp $
+} {
+ fund_id:integer,notnull
+
+ {user ""}
+ {user_id 0}
+
+} -properties {
+} -validate {
+} -errors {
+}
+
+if { ! [empty_string_p $user] } {
+ # Search found users, show a more detailed list
+ template::list::create \
+ -name users \
+ -multirow users \
+ -key user_id \
+ -page_size 50 \
+ -page_flush_p 1 \
+ -no_data "No users found" \
+ -page_query [subst {
+ select u.user_id, u.first_names, u.last_name, u.email, a.phone, a.line1, a.line2
+ from dotlrn_users u
+ left join (select *
+ from ec_addresses
+ where address_id
+ in (select max(address_id)
+ from ec_addresses
+ group by user_id)) a
+ on (u.user_id = a.user_id)
+ where u.user_id != :user_id
+ and u.user_id != :user_id
+ and (case when :user is null
+ then true
+ else (lower(first_names) like lower(:user)||'%' or
+ lower(last_name) like lower(:user)||'%' or
+ lower(email) like lower(:user)||'%' or
+ lower(phone) like '%'||lower(:user)||'%') end)
+ }] -elements {
+ _user_id {
+ label "User ID"
+ }
+ email {
+ label "Email Address"
+ }
+ first_names {
+ label "First Name"
+ }
+ last_name {
+ label "Last Name"
+ }
+ phone {
+ label "Phone Number"
+ }
+ address {
+ label "Address"
+ display_template {
+ @users.line1@
+
+
@users.line2@
+
+ }
+ }
+ action {
+ display_template {
+ Choose User
+ }
+ }
+ } -filters {
+ user_id {}
+ user {}
+ fund_id {}
+ }
+
+ db_multirow -extend { add_user_url } users users [subst {
+ select u.user_id as _user_id, u.first_names, u.last_name, u.email, a.phone, a.line1, a.line2
+ from dotlrn_users u
+ left join (select *
+ from ec_addresses
+ where address_id
+ in (select max(address_id)
+ from ec_addresses
+ group by user_id)) a
+ on (u.user_id = a.user_id)
+ where u.user_id != :user_id
+ and (case when :user is null
+ then true
+ else (lower(first_names) like lower(:user)||'%' or
+ lower(last_name) like lower(:user)||'%' or
+ lower(email) like lower(:user)||'%' or
+ lower(phone) like '%'||lower(:user)||'%') end)
+ [template::list::page_where_clause -and -name users -key u.user_id]
+ }] {
+ set add_user_url [export_vars -base scholarship-grant { fund_id {user_id $_user_id} { user "" } new_user_p }]
+ }
+}
+
+ad_form -name grant -form {
+ {-section "Grant"}
+}
+
+if { $user_id } {
+
+ acs_user::get -user_id $user_id -array user_info
+ set search_url [export_vars -base scholarship-grant { fund_id {user_id 0} {user ""} }]
+ ad_form -extend -name grant -export { fund_id user user_id } -form {
+ {_participant:text(inform) {label "User"} {value "$user_info(first_names) $user_info(last_name) ($user_info(email))"}
+ {after_html {Search Again}}
+ }
+ }
+
+} else {
+
+ ad_form -extend -name grant -export { fund_id } -form {
+ {user:text,optional {label "Search User"} {html {onchange "if (this.value != '') { this.form.__refreshing_p.value = 1; } else { this.form.__refreshing_p.value = 0 ; }" size 30}}
+ {help_text "Enter a string to search names and email addresses."}
+ }
+ }
+
+}
+
+set fund_amount [db_string fund_amount {
+ select amount
+ from scholarship_fund
+ where fund_id = :fund_id
+} -default 0]
+
+ad_form -extend -name grant -validate {
+ {grant_amount
+ { $grant_amount > 0 && $grant_amount <= $fund_amount }
+ "Please enter an amount up to $fund_amount"
+ }
+} -form {
+ {grant_amount:text {label "Amount to Grant"}
+ {html {size 10}}
+ }
+} -on_submit {
+ db_transaction {
+
+ set gift_certificate_id [db_nextval ec_gift_cert_id_sequence]
+ set random_string [ec_generate_random_string 10]
+ set claim_check "scholarship-$random_string-$gift_certificate_id"
+ set peeraddr [ns_conn peeraddr]
+ set gc_months [ad_parameter -package_id [ec_id] GiftCertificateMonths ecommerce]
+
+ set viewing_user_id [ad_conn user_id]
+
+ db_dml insert_new_gc_into_db [subst {
+ insert into ec_gift_certificates
+ (gift_certificate_id, gift_certificate_state, amount, issue_date, purchased_by, expires, last_modified, last_modifying_user, modified_ip_address, user_id)
+ values
+ (:gift_certificate_id, 'authorized', :grant_amount, current_timestamp, :viewing_user_id, current_timestamp + '$gc_months months'::interval, current_timestamp, :viewing_user_id, :peeraddr, :user_id)
+ }]
+
+ db_dml insert_scholarship_grant {
+ insert into scholarship_fund_grants
+ (fund_id, user_id, gift_certificate_id, grant_amount)
+ values
+ (:fund_id, :user_id, :gift_certificate_id, :grant_amount)
+ }
+
+ db_dml update_scholarship_fund {
+ update scholarship_fund
+ set amount = amount - :grant_amount
+ where fund_id = :fund_id
+ }
+ }
+
+ ad_returnredirect index
+ ad_script_abort
+}
\ No newline at end of file