album.tcl
Album display page.
- Location:
- /packages/photo-album/www/album.tcl
- Authors:
- Tom Baginski <bags@arsdigita.com>
- Jeff Davis <davis@xarg.net>
- Created:
- 12/10/2000
- CVS ID:
$Id: album.tcl,v 1.11 2018/05/09 15:33:33 hectorr Exp $
Related Files
- packages/photo-album/www/album.xql
- packages/photo-album/www/album.tcl
- packages/photo-album/www/album.adp
- packages/photo-album/www/album-postgresql.xql
- packages/photo-album/www/album-oracle.xql
[ hide source ] | [ make this the default ]
File Contents
# /packages/photo-album/www/album.tcl ad_page_contract { Album display page. @author Tom Baginski (bags@arsdigita.com) @author Jeff Davis (davis@xarg.net) @creation-date 12/10/2000 @cvs-id $Id: album.tcl,v 1.11 2018/05/09 15:33:33 hectorr Exp $ } { album_id:naturalnum,notnull {page:integer,notnull "1"} {msg:integer,notnull "0"} } -validate { valid_album -requires {album_id:integer} { if [string equal [pa_is_album_p $album_id] "f"] { ad_complain "[_ photo-album._The_1]" } } } -properties { album_id:onevalue title:onevalue photographer:onevalue description:onevalue story:onevalue context:onevalue child_photo:multirow page_nav:onevalue admin_p:onevalue photo_p:onevalue write_p:onevalue move_p:onevalue delete_p:onevalue collections:onevalue } set user_id [ad_conn user_id] # check for read permission on album permission::require_permission -object_id $album_id -privilege read # These lines are to uncache the image in Netscape, Mozilla. # IE6 & Safari (mac) have a bug with the images cache ns_set put [ns_conn outputheaders] "Expires" "-" ns_set put [ns_conn outputheaders] "Last-Modified" "-" ns_set put [ns_conn outputheaders] "Pragma" "no-cache" ns_set put [ns_conn outputheaders] "Cache-Control" "no-cache" set context [pa_context_bar_list $album_id] db_1row get_album_info {} # to move an album need write on album and write on parent folder set move_p [expr {$write_p && $folder_write_p}] # to delete an album, album must be empty, need delete on album, and write on parent folder set has_children_p [expr {[pa_count_photos_in_album $album_id] > 0}] set delete_p [expr {!($has_children_p) && $album_delete_p && $folder_write_p}] # Did we get a msg id, if so display it at the top of the page # TODO: JCD: We should remove it from vars so it does not propagate array set msgtext { 1 {<strong>Your text changes have been saved and any image changes such as rotations are being carried out in the background</strong>} 2 {There was a problem with your update. Please notify the webmaster} } if {$msg && [info exists msgtext($msg)]} { set message $msgtext($msg) } else { set message {} } # change design so permission checks stop at the album level # load testing showed serious performance problems when # each photo could have individual permissions # # for now all photo in an album inherit the permission of the album that # contains them. Only need to check the read permission of the album, which was done at the top of the page. set photos_on_page [pa_all_photos_on_page $album_id $page] if {$has_children_p && [llength $photos_on_page] > 0} { # query gets all child photos in album # I query the data without an orderby in the sql to cut the querry time # and then sort the returned data manually while constructing the multirow datasource. # This goes against the theory of let oracle do the hard work, but load testing and # query tuning showed that the order by doubled the query time while sorting a few rows in tcl was fast # wtem@olywa.net, 2001-09-24 db_foreach get_child_photos {} { set val(photo_id) $photo_id set val(caption) $caption set val(thumb_path) $thumb_path set val(thumb_height) $thumb_height set val(thumb_width) $thumb_width set child($photo_id) [array get val] } # if the structure of the multirow datasource ever changes, this needs to be rewritten set counter 0 foreach id $photos_on_page { if {[info exists child($id)]} { incr counter foreach {key value} $child($id) { set child_photo:${counter}($key) $value } } } set child_photo:rowcount $counter set pages [list] set total_pages [pa_count_pages_in_album $album_id] for {set i 1} {$i <= $total_pages} {incr i} { lappend pages $i } set page_nav [pa_pagination_bar $page $pages "[export_vars -base album {album_id}]&page="] } else { # don't bother querying for children if we know they don't exist set child_photo:rowcount 0 set page_nav "" } set collections [db_string collections {select count(*) from pa_collections where owner_id = :user_id}] ad_return_template