Index: openacs-4/packages/ajax-photoalbum-ui/ajax-photoalbum-ui.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/ajax-photoalbum-ui.info,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/ajax-photoalbum-ui.info 11 Apr 2009 15:46:44 -0000 1.1 @@ -0,0 +1,27 @@ +<?xml version="1.0"?> +<!-- Generated by the OpenACS Package Manager --> + +<package key="ajax-photoalbum-ui" url="http://openacs.org/repository/apm/packages/ajax-photoalbum-ui" type="apm_service"> + <package-name>Ajax Photo-Album UI</package-name> + <pretty-plural>Ajax Photo-Album UI</pretty-plural> + <initial-install-p>f</initial-install-p> + <singleton-p>t</singleton-p> + <auto-mount>ajaxpa</auto-mount> + + <version name="0.1" url="http://openacs.org/repository/download/apm/ajax-photoalbum-ui-0.1.apm"> + <owner url="mailto:ham@solutiongrove.com">hamilton chua</owner> + <vendor url="http://www.solutiongrove.com">Solutiongrove</vendor> + <maturity>0</maturity> + + <provides url="ajax-photoalbum-ui" version="0.1"/> + <requires url="ajaxhelper" version="0.87d"/> + <requires url="photo-album" version="5.2.3"/> + + <callbacks> + </callbacks> + <parameters> + + </parameters> + + </version> +</package> Index: openacs-4/packages/ajax-photoalbum-ui/catalog/ajax-photoalbum-ui.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/catalog/ajax-photoalbum-ui.en_US.ISO-8859-1.xml,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/catalog/ajax-photoalbum-ui.en_US.ISO-8859-1.xml 11 Apr 2009 15:46:44 -0000 1.1 @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<message_catalog package_key="ajax-photoalbum-ui" package_version="0.1" locale="en_US" charset="ISO-8859-1"> + + <msg key="Album">Album</msg> + <msg key="Delete">Delete</msg> + <msg key="Edit">Edit</msg> + <msg key="Folder">Folder</msg> + <msg key="foldersandalbums">Folders & Albums</msg> + <msg key="New">New</msg> + <msg key="Photo">Photo</msg> +</message_catalog> Index: openacs-4/packages/ajax-photoalbum-ui/catalog/ajax-photoalbum-ui.en_US.ISO-8859-1.xml.orig =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/catalog/ajax-photoalbum-ui.en_US.ISO-8859-1.xml.orig,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/catalog/ajax-photoalbum-ui.en_US.ISO-8859-1.xml.orig 11 Apr 2009 15:46:44 -0000 1.1 @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<message_catalog package_key="ajax-photoalbum-ui" package_version="0.1" locale="en_US" charset="ISO-8859-1"> + <msg key="New">New</msg> + <msg key="Edit">Edit</msg> + <msg key="Delete">Delete</msg> + <msg key="Folder">Folder</msg> + <msg key="Album">Album</msg> + <msg key="Photo">Photo</msg> +</message_catalog> Index: openacs-4/packages/ajax-photoalbum-ui/lib/ajaxpa-include.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/lib/ajaxpa-include.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/lib/ajaxpa-include.adp 11 Apr 2009 15:46:44 -0000 1.1 @@ -0,0 +1,42 @@ + <link rel="stylesheet" type="text/css" href="/resources/ajaxhelper/ext2/resources/css/ext-all.css"> + <if @theme@ not nil> + <link rel="stylesheet" type="text/css" href="/resources/ajaxhelper/ext2/resources/css/xtheme-@theme@.css"> + </if> + <link rel="stylesheet" type="text/css" href="/resources/ajax-photoalbum-ui/ajaxpa.css"> + + <script type="text/javascript" src="/resources/ajaxhelper/ext2/adapter/ext/ext-base.js"></script> + <script type="text/javascript" src="/resources/ajaxhelper/ext2/ext-all.js"></script> + <script type="text/javascript" src="/resources/ajax-photoalbum-ui/data-view-plugins.js"></script> + <script type="text/javascript" src="/resources/ajax-photoalbum-ui/FileUploadField.js"></script> + <script type="text/javascript" src="/resources/ajax-photoalbum-ui/ajaxpa.js"></script> + <script type="text/javascript" src="/resources/ajax-photoalbum-ui/shadowbox/adapter/shadowbox-ext.js"></script> + <script type="text/javascript" src="/resources/ajax-photoalbum-ui/shadowbox/shadowbox.js"></script> + <script type="text/javascript" src="/resources/ajax-photoalbum-ui/swfupload/swfupload.js"></script> + <script type="text/javascript" src="/resources/ajax-photoalbum-ui/swfupload/swfupload.queue.js"></script> + <script type="text/javascript" src="/resources/ajax-photoalbum-ui/swfupload/fileprogress.js"></script> + + <if @options@ defined> + <script type="text/javascript"> + var acs_lang_text = { + foldersalbums:"#ajax-photoalbum-ui.foldersandalbums#", + newitem:"#ajax-photoalbum-ui.New#", + edititem:"#ajax-photoalbum-ui.Edit#", + deleteitem:"#ajax-photoalbum-ui.Delete#", + folder:"#ajax-photoalbum-ui.Folder#", + album:"#ajax-photoalbum-ui.Album#", + photo:"#ajax-photoalbum-ui.Photo#", + newalbum:"#photo-album.Add_a_new_album#", + editalbum:"#photo-album._Edit#", + newfolder:"#photo-album._Create_1#", + editfolder:"#photo-album._Edit_1#", + uploadphoto:"#photo-album.Upload_a_Photo#", + editphoto:"#photo-album._Edit_2#", + collection:"#photo-album.lt_Add_a_collection_of_p#" + }; + Shadowbox.loadSkin('classic','/resources/ajax-photoalbum-ui/shadowbox/skin/'); + Shadowbox.loadLanguage('en', '/resources/ajax-photoalbum-ui/shadowbox/lang/'); + Shadowbox.loadPlayer(['img'], '/resources/ajax-photoalbum-ui/shadowbox/player/'); + var paInstance = new ajaxpa({@options;noquote@}) + </script> + + </if> \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/lib/ajaxpa-include.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/lib/ajaxpa-include.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/lib/ajaxpa-include.tcl 11 Apr 2009 15:46:44 -0000 1.1 @@ -0,0 +1,56 @@ +# ajax-photoalbum-ui/lib/ajaxpa-include.tcl +# This include should be placed on a page +# where you wish to have an ajaxpa instance +# this include expects the following variables +# package_id : package_id of the file storage instance +# container_id : the object_id of the folder or album that will be opened on load, defaults to the root folder +# layoutdiv : the id of the div element where you want ajaxpa to be rendered, defaults to the entire page +# theme : can be any of the following +# - default +# - gray + +if { ![exists_and_not_null theme] } { + set theme "gray" +} + +if { [exists_and_not_null package_id] } { + + set user_id [ad_conn user_id] + set options [list] + set rootfolder_id [pa_get_root_folder $package_id] + set instance_name [db_string "get_folder_name" "select name as instance_name from fs_folders where folder_id = :rootfolder_id"] + + lappend options "package_id:$package_id" + + # get the pa root folder based on package_id + lappend options "rootfolder_id:$rootfolder_id" + lappend options "rootfolder_name:\"$instance_name\"" + + # url to the current photo album package + lappend options "package_url:\"[apm_package_url_from_id $package_id]\"" + + # get the path to ajaxpa + lappend options "xmlhttpurl:\"[ajaxpa::get_url]\xmlhttp/\"" + + # thumbnails per page + lappend options "pagesize:\"[parameter::get -package_id $package_id -parameter ThumbnailsPerPage]\"" + + # user_id + lappend options "user:\"$user_id\"" + + # perms for the user on root + lappend options "root_write_p:[permission::permission_p -party_id $user_id -object_id $rootfolder_id -privilege write]" + lappend options "root_read_p:[permission::permission_p -party_id $user_id -object_id $rootfolder_id -privilege read]" + + if { [exists_and_not_null layoutdiv] } { + lappend options "layoutdiv:\"$layoutdiv\"" + } + + set options [join $options ","] + +} else { + + ad_return_complaint 1 "Package id is required." + ad_script_abort + +} \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/tcl/ajax-photoalbum-ui-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/tcl/ajax-photoalbum-ui-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/tcl/ajax-photoalbum-ui-procs.tcl 11 Apr 2009 15:56:12 -0000 1.1 @@ -0,0 +1,63 @@ +ad_library { + + Library for Ajax Photo Album UI + uses Ajax Helper package with ExtJS and the Yahoo User Interface Library. + http://developer.yahoo.net/yui/index.html + http://extjs.com/deploy/dev/docs/ + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2007-11-18 + +} + + +namespace eval ajaxpa { } + +ad_proc -private ajaxpa::get_package_id { + +} { + Return the package_id of the installed and mounted ajax photo album ui + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2007-11-18 + @return + + @error + +} { + return [apm_package_id_from_key "ajax-photoalbum-ui"] +} + +ad_proc -private ajaxpa::get_url { + +} { + Return the URL to the mounted ajax photo album ui instance + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2007-11-18 + @return + + @error + +} { + return [apm_package_url_from_id [ajaxpa::get_package_id]] +} + +ad_proc -private ajaxpa::json_normalize { + -value +} { + Normalizes text for use in a JSON attribute. + - escape double quotes + - removes line breaks + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2007-11-18 + @return + + @error + +} { + regsub -all {"} $value {\"} value + regsub -all {\n} $value { } value + return $value +} \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/batchdownload/index.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/batchdownload/index.vuh,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/batchdownload/index.vuh 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,76 @@ +# ajax-photoalbum-ui-service/www/batchdownload/index.vuh + +ad_page_contract { + + Batch download a set of photos. + - receives a list of photo ids + - copies them into a temporary folder + - zips the folder + - offers it up for download + +} { + photo_ids +} + +set user_id [ad_conn user_id] +set photo_id_list [split $photo_ids ","] + +set package_id [ad_conn package_id] +set package_path "[acs_root_dir]/[pkg_home photo-album]" + +# create a name for the temporary directory +# - use the user's name and current datetime +set path_to_download "[ns_tmpnam]" + +# create the temporary directory to hold the files +file mkdir $path_to_download + +# loop thru photo_id_list +# - get a reference to the image on the cr +# - copy to the +foreach photo_id $photo_id_list { + + photo_album::photo::get -photo_id $photo_id -array photo_arr + + set revision_id $photo_arr(viewer_live_revision) + + if { [db_0or1row "get_revision_info" { + select i.storage_type, i.storage_area_key, r.mime_type, i.item_id, + r.content_length + from cr_items i, cr_revisions r + where r.revision_id = :revision_id and i.item_id = r.item_id + }] } { + set path [cr_fs_path $storage_area_key] + set filename [db_string write_file_content { + select :path || content + from cr_revisions + where revision_id = :revision_id + }] + file copy -force $filename $path_to_download/$photo_arr(viewer_name) + if { ![db_resultrows] } { + set album_id $photo_arr(album_id) + } + } + +} + + +# create the zip file +set outpath [ns_tmpnam] +file mkdir $outpath +set outfile [file join ${outpath} "photos.zip"] + +set cmd "zip -q -1 -r $outfile *.*" + +set status [catch {exec bash -c "cd $path_to_download; $cmd; cd -"} result] + +# return the archive to the connection. +ns_set put [ad_conn outputheaders] Content-Disposition "attachment;filename=\"photos.zip\"" +ns_set put [ad_conn outputheaders] Content-Type "application/zip" +ns_set put [ad_conn outputheaders] Content-Size "[file size $outfile]" +ns_returnfile 200 application/octet-stream $outfile + +file delete -force $path_to_download +file delete -force $outpath + + Index: openacs-4/packages/ajax-photoalbum-ui/www/doc/index.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/doc/index.html,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/doc/index.html 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,57 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" +"http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> +<title>Ajax Photo Album User Interface</title> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> + <style> + body { font-family:arial; } + .style1 {color: #FF0000} + </style> +</head> +<body> +<h1>Ajax Photo Album User Interface </h1> +<p>Hamilton G. Chua (ham@solutiongrove.com)<br> + April 2009 <br> + v0.1</p> +<p><strong>What's New :</strong> </p> +<p>v0.1</p> +<ul> + <li>Initial Release (see Features below for details) +</ul> + +<p><strong>Description :</strong> </p> +Is a package that works on top of the Photo Album package. It creates a ajax powered user interface using the ExtJS javascript library. + +<p><strong>Features :</strong> </p> +<ul> +<li>User interface loaded using ajax +<li>Thumbnail view of images in an album +<li><a href="http://www.shadowbox-js.com/">Shadowbox Media Viewer</a> integration +<li>Paging of photos +<li>Move albums and folders from one folder to another using drag and drop on the treepanel +<li>Move photos from one album to another on the treepanel using drag and drop +</ul> + +<p><strong>Set Up :</strong> </p> + +In order to use AjaxPA, some modifications are necessary on the photo album package. These modifications include : +<ul> +<li>checking for return_urls +<li>making some procs accept a package_id +</ul> + +Download and apply <a href="photo-album-ajaxpa.diff">this patch</a> onto your photo-album package. +If you downloaded the patch into your /tmp folder and your photo-album package is in a folder openacs/packages, this is how you would apply the patch. + +<pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"><code> + +cd openacs/packages/photo-album +patch -p0 -i /tmp/photo-album-ajaxpa.diff + +</code> +</pre> + +<br><br> +</body> +</html> Index: openacs-4/packages/ajax-photoalbum-ui/www/doc/photo-album-ajaxpa.diff =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/doc/photo-album-ajaxpa.diff,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/doc/photo-album-ajaxpa.diff 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,485 @@ +Index: photo-album.info +=================================================================== +--- photo-album.info (revision 92) ++++ photo-album.info (working copy) +@@ -14,14 +14,14 @@ + <summary>Organization, editing and display of user uploaded photos.</summary> + <release-date>2006-02-18</release-date> + <vendor url="http://openacs.org">OpenACS</vendor> +- <description format="text/html">A photo album application that provides photo display and grouping +-functionality using the ACS Content Repository. +-<p> +-Allows users to upload photos, store and edit attributes, and group +-photos into albums and folders. Supports permissioning, exif data, and user clipboards. +-<p> +-Requires installation of ImageMagick and jhead on host machine. See design doc +-for details. ++ <description format="text/html">A photo album application that provides photo display and grouping ++functionality using the ACS Content Repository. ++<p> ++Allows users to upload photos, store and edit attributes, and group ++photos into albums and folders. Supports permissioning, exif data, and user clipboards. ++<p> ++Requires installation of ImageMagick and jhead on host machine. See design doc ++for details. + </description> + <maturity>1</maturity> + +@@ -48,6 +48,7 @@ + <parameter datatype="number" min_n_values="1" max_n_values="1" name="ThumbnailSize" default="150x150" description="Max Dimension for thumbnail image"/> + <parameter datatype="number" min_n_values="1" max_n_values="1" name="ThumbnailsPerPage" default="12" description="Number of thumbnail images to be displayed per album page"/> + <parameter datatype="number" min_n_values="1" max_n_values="1" name="ViewerSize" default="700x500" description="Max Dimension for viewer image"/> ++ <parameter datatype="number" min_n_values="1" max_n_values="1" name="UseAjaxPa" default="0" description="Set to 1 if you want to use ajax-photoalbum-ui with this instance of photo-album."/> + </parameters> + + </version> +Index: tcl/photo-album-procs.tcl +=================================================================== +--- tcl/photo-album-procs.tcl (revision 92) ++++ tcl/photo-album-procs.tcl (working copy) +@@ -347,6 +347,7 @@ + } + + ad_proc -public pa_make_new_image { ++ {-package_id {}} + base_image + new_image + geometry +@@ -370,8 +371,9 @@ + if {[regexp {^[0-9]+$} $geometry]} { + set geometry ${geometry}x${geometry} + } ++ if { ![exists_and_not_null package_id] } { set package_id [ad_conn package_id] } + ns_log debug "pa_make_new_image: Start convert, making $new_image geometry $geometry" +- exec [ad_parameter ImageMagickPath]/convert -geometry $geometry -interlace None -sharpen 1x2 $base_image $new_image ++ exec [parameter::get -parameter ImageMagickPath -package_id $package_id]/convert -geometry $geometry -interlace None -sharpen 1x2 $base_image $new_image + if {[catch {exec jhead -dt $new_image} errmsg]} { + ns_log Warning "pa_make_new_image: jhead failed with error - $errmsg" + } +@@ -705,15 +707,17 @@ + } + + ad_proc -public pa_file_info { ++ {-package_id {}} + file + } { + return the image information from a given file + } { + set info [list] ++ if { ![exists_and_not_null package_id] } { set package_id [ad_conn package_id] } + if { [catch {set size [file size $file]} errMsg] } { + return -code error $errMsg + } +- if { [ catch {set out [exec [ad_parameter ImageMagickPath]/identify -format "%w %h %m %k %q %#" $file]} errMsg]} { ++ if { [ catch {set out [exec [parameter::get -parameter ImageMagickPath -package_id $package_id]/identify -format "%w %h %m %k %q %#" $file]} errMsg]} { + return -code error $errMsg + } + +@@ -826,7 +830,7 @@ + set client_filename $upload_name + } + +- if {[catch {set base_info [pa_file_info $image_file]} errMsg]} { ++ if {[catch {set base_info [pa_file_info -package_id $package_id $image_file]} errMsg]} { + ns_log Warning "pa_load_images: error parsing file data $image_file Error: $errMsg" + error "pa_load_images: error parsing file data $image_file Error: $errMsg" + continue +@@ -840,7 +844,7 @@ + set new_image [file join $tmp_path "tmp-[file rootname [file tail $image_file]]"] + if {![empty_string_p $base_colors] && $base_colors < 257} { + # convert it to a png +- if {[catch {exec [ad_parameter ImageMagickPath]/convert $image_file PNG:$new_image.png} errMsg]} { ++ if {[catch {exec [parameter::get -parameter ImageMagickPath -package_id $package_id]/convert $image_file PNG:$new_image.png} errMsg]} { + ns_log Warning "pa_load_images: Failed convert to PNG for $image_file (magicktype $base_type)" + } + if { $remove } { +@@ -850,7 +854,7 @@ + set remove 1 + } elseif {![empty_string_p $base_colors] && $base_colors > 256} { + # convert it to a jpg +- if {[catch {exec [ad_parameter ImageMagickPath]/convert $image_file JPG:$new_image.jpg} errMsg]} { ++ if {[catch {exec [parameter::get -parameter ImageMagickPath -package_id $package_id]/convert $image_file JPG:$new_image.jpg} errMsg]} { + ns_log Warning "pa_load_images: failed convert to JPG for $image_file (magicktype $base_type)" + } + if { $remove } { +@@ -863,7 +867,7 @@ + } + + # get info again +- foreach {base_bytes base_width base_height base_type base_mime base_colors base_quantum base_sha256} [pa_file_info $image_file] { break } ++ foreach {base_bytes base_width base_height base_type base_mime base_colors base_quantum base_sha256} [pa_file_info -package_id $package_id $image_file] { break } + } + + if {[string equal $base_mime image/jpeg]} { +@@ -898,16 +902,16 @@ + set viewer_size [parameter::get -parameter ViewerSize -package_id $package_id] + set viewer_filename [pa_make_file_name -ext $BaseExt $viewer_rev_id] + set full_viewer_filename [file join ${tmp_path} ${viewer_filename}] +- pa_make_new_image $image_file ${full_viewer_filename} $viewer_size +- foreach {viewer_bytes viewer_width viewer_height viewer_type viewer_mime viewer_colors viewer_quantum viewer_sha256} [pa_file_info $full_viewer_filename] {} ++ pa_make_new_image -package_id $package_id $image_file ${full_viewer_filename} $viewer_size ++ foreach {viewer_bytes viewer_width viewer_height viewer_type viewer_mime viewer_colors viewer_quantum viewer_sha256} [pa_file_info -package_id $package_id $full_viewer_filename] {} + + # Handle thumb file + # + set thumb_size [parameter::get -parameter ThumbnailSize -package_id $package_id] + set thumb_filename [pa_make_file_name -ext $BaseExt $thumb_rev_id] + set full_thumb_filename [file join $tmp_path $thumb_filename] +- pa_make_new_image ${full_viewer_filename} ${full_thumb_filename} $thumb_size +- foreach {thumb_bytes thumb_width thumb_height thumb_type thumb_mime thumb_colors thumb_quantum thumb_sha256} [pa_file_info $full_thumb_filename] {} ++ pa_make_new_image -package_id $package_id ${full_viewer_filename} ${full_thumb_filename} $thumb_size ++ foreach {thumb_bytes thumb_width thumb_height thumb_type thumb_mime thumb_colors thumb_quantum thumb_sha256} [pa_file_info -package_id $package_id $full_thumb_filename] {} + + # copy the tmp file to the cr's file-system + set thumb_filename_relative [cr_create_content_file -move $thumb_item_id $thumb_rev_id ${full_thumb_filename}] +Index: www/index.tcl +=================================================================== +--- www/index.tcl (revision 92) ++++ www/index.tcl (working copy) +@@ -33,6 +33,12 @@ + # check for read permission on folder + ad_require_permission $folder_id read + ++# HAM : AjaxPA ++# - we need to pass package_id to ajaxpa-include ++# - turn ajaxpa on/off with a parameter, default to 1 for now ++set package_id [ad_conn package_id] ++set use_ajaxpa_p [parameter::get -parameter UseAjaxPa -default 1] ++ + set user_id [ad_conn user_id] + set context [pa_context_bar_list $folder_id] + +@@ -40,7 +46,7 @@ + db_1row get_folder_info {} + + set root_folder_id [pa_get_root_folder] +-set parameter_url_vars [export_url_vars package_id=[ad_conn package_id] return_url=[ad_conn url]] ++set parameter_url_vars [export_url_vars package_id=$package_id return_url=[ad_conn url]] + + # to move an album need write on album and write on parent folder + set move_p [expr $write_p && !($folder_id == $root_folder_id) && $parent_folder_write_p] +Index: www/folder-delete.tcl +=================================================================== +--- www/folder-delete.tcl (revision 92) ++++ www/folder-delete.tcl (working copy) +@@ -11,6 +11,7 @@ + } { + folder_id:integer,notnull + {confirmed_p "f"} ++ return_url:optional + } -validate { + valid_folder -requires {folder_id:integer} { + if [string equal [pa_is_folder_p $folder_id] "f"] { +@@ -50,7 +51,14 @@ + content_folder.del(:folder_id); + end;" + +- ad_returnredirect "?folder_id=$parent_folder_id" ++ # HAM : added return_url ++ if { ![exists_and_not_null return_url] } { ++ #redirect back to index page with parent_id ++ ad_returnredirect "?folder_id=$parent_folder_id" ++ } else { ++ ad_returnredirect $return_url ++ } ++ + ad_script_abort + } else { + # they still need to confirm +Index: www/photo-edit.tcl +=================================================================== +--- www/photo-edit.tcl (revision 92) ++++ www/photo-edit.tcl (working copy) +@@ -11,6 +11,7 @@ + {hide:integer 0} + {photo_id:integer 0} + d:array,integer,optional ++ return_url:optional + } -properties { + path:onevalue + height:onevalue +@@ -122,7 +123,13 @@ + ad_script_abort + } + +- ad_returnredirect "photo?photo_id=$photo_id" ++ # HAM : added return_url ++ if { ![exists_and_not_null return_url] } { ++ ad_returnredirect "photo?photo_id=$photo_id" ++ } else { ++ ad_returnredirect $return_url ++ } ++ + ad_script_abort + } + +Index: www/album-edit.tcl +=================================================================== +--- www/album-edit.tcl (revision 92) ++++ www/album-edit.tcl (working copy) +@@ -9,6 +9,7 @@ + @cvs-id $Id: photo-album-ajaxpa.diff,v 1.1 2009/04/11 15:56:13 hamiltonc Exp $ + } { + album_id:integer,notnull ++ return_url:optional + } -validate { + valid_album -requires {album_id:integer} { + if [string equal [pa_is_album_p $album_id] "f"] { +@@ -90,7 +91,13 @@ + + ad_script_abort + } +- ad_returnredirect "album?album_id=$album_id" ++ ++ # HAM : added return_url ++ if { ![exists_and_not_null return_url] } { ++ ad_returnredirect "album?album_id=$album_id" ++ } else { ++ ad_returnredirect $return_url ++ } + ad_script_abort + } + +Index: www/album-add.tcl +=================================================================== +--- www/album-add.tcl (revision 92) ++++ www/album-add.tcl (working copy) +@@ -9,6 +9,7 @@ + @cvs-id $Id: photo-album-ajaxpa.diff,v 1.1 2009/04/11 15:56:13 hamiltonc Exp $ + } { + parent_id:integer,notnull ++ return_url:optional + } -validate { + valid_parent_folder -requires {parent_id:integer} { + if [string equal [pa_is_folder_p $parent_id] "f"] { +@@ -86,8 +87,13 @@ + } + #redirect back to index page with parent_id + +- ad_returnredirect "?folder_id=$parent_id" +- ++ # HAM : added return_url ++ if { ![exists_and_not_null return_url] } { ++ #redirect back to index page with parent_id ++ ad_returnredirect "?folder_id=$parent_id" ++ } else { ++ ad_returnredirect $return_url ++ } + ad_script_abort + } + +Index: www/folder-edit.tcl +=================================================================== +--- www/folder-edit.tcl (revision 92) ++++ www/folder-edit.tcl (working copy) +@@ -9,6 +9,7 @@ + @cvs-id $Id: photo-album-ajaxpa.diff,v 1.1 2009/04/11 15:56:13 hamiltonc Exp $ + } { + folder_id:integer,notnull ++ return_url:optional + } -validate { + valid_folder -requires {folder_id:integer} { + if [string equal [pa_is_folder_p $folder_id] "f"] { +@@ -70,7 +71,13 @@ + } + #redirect back to index page with parent_id + +- ad_returnredirect "?folder_id=$folder_id" ++ # HAM : added return_url ++ if { ![exists_and_not_null return_url] } { ++ #redirect back to index page with parent_id ++ ad_returnredirect "?folder_id=$parent_id" ++ } else { ++ ad_returnredirect $return_url ++ } + + ad_script_abort + } +Index: www/album-delete.tcl +=================================================================== +--- www/album-delete.tcl (revision 92) ++++ www/album-delete.tcl (working copy) +@@ -10,6 +10,7 @@ + } { + album_id:integer,notnull + {confirmed_p "f"} ++ return_url:optional + } -validate { + valid_album -requires {album_id:integer} { + if [string equal [pa_is_album_p $album_id] "f"] { +@@ -44,7 +45,13 @@ + + pa_flush_photo_in_album_cache $album_id + +- ad_returnredirect "?folder_id=$parent_folder_id" ++ # HAM : added return_url ++ if { ![exists_and_not_null return_url] } { ++ #redirect back to index page with parent_id ++ ad_returnredirect "?folder_id=$parent_folder_id" ++ } else { ++ ad_returnredirect $return_url ++ } + ad_script_abort + + } else { +Index: www/index.adp +=================================================================== +--- www/index.adp (revision 92) ++++ www/index.adp (working copy) +@@ -2,6 +2,11 @@ + <property name="title">@folder_name;noquote@</property> + <property name="context">@context;noquote@</property> + ++<if @use_ajaxpa_p@ eq 1> ++<include src="/packages/ajax-photoalbum-ui/lib/ajaxpa-include" package_id="@package_id@" layoutdiv="pacontainer"> ++</if> ++ ++<div id="pacontainer"> + <if @folder_description@ not nil> + <p>@folder_description;noquote@</p> + </if> +@@ -63,4 +68,4 @@ + <a href="http://shutterfly.com">#photo-album.shutterflycom#</a> #photo-album.lt_for______printing_fro# <a href="clipboards">#photo-album.clipboard#</a> #photo-album.screen# + </p> + </if> +- ++</div> +Index: www/photo-delete.tcl +=================================================================== +--- www/photo-delete.tcl (revision 92) ++++ www/photo-delete.tcl (working copy) +@@ -13,6 +13,7 @@ + } { + photo_id:integer,notnull + {confirmed_p "f"} ++ return_url:optional + } -validate { + valid_photo -requires {photo_id:integer} { + if [string equal [pa_is_photo_p $photo_id] "f"] { +@@ -44,7 +45,12 @@ + + pa_flush_photo_in_album_cache $album_id + +- ad_returnredirect "album?album_id=$album_id" ++ # HAM : added return_url ++ if { ![exists_and_not_null return_url] } { ++ ad_returnredirect "album?album_id=$album_id" ++ } else { ++ ad_returnredirect $return_url ++ } + ad_script_abort + + } else { +Index: www/folder-add.tcl +=================================================================== +--- www/folder-add.tcl (revision 92) ++++ www/folder-add.tcl (working copy) +@@ -9,6 +9,7 @@ + @cvs-id $Id: photo-album-ajaxpa.diff,v 1.1 2009/04/11 15:56:13 hamiltonc Exp $ + } { + parent_id:integer,notnull ++ return_url:optional + } -validate { + valid_parent -requires {parent_id:integer} { + if [string equal [pa_is_folder_p $parent_id] "f"] { +@@ -104,7 +105,12 @@ + ad_script_abort + } + +- #redirect back to index page with parent_id +- ad_returnredirect "?folder_id=$parent_id" ++ # HAM : added return_url ++ if { ![exists_and_not_null return_url] } { ++ #redirect back to index page with parent_id ++ ad_returnredirect "?folder_id=$parent_id" ++ } else { ++ ad_returnredirect $return_url ++ } + ad_script_abort + } +Index: www/photos-add-2.tcl +=================================================================== +--- www/photos-add-2.tcl (revision 92) ++++ www/photos-add-2.tcl (working copy) +@@ -11,6 +11,7 @@ + {upload_file:optional,trim ""} + upload_file.tmpfile:optional,tmpfile + album_id:integer,notnull ++ return_url:optional + } -validate { + valid_album -requires {album_id:integer} { + if [string equal [pa_is_album_p $album_id] "f"] { +@@ -37,18 +38,24 @@ + [ catch {set tmp_dir [pa_expand_archive $upload_file ${upload_file.tmpfile} pa-$album_id] } errMsg] } { + ad_return_complaint 1 "Unable to expand your archive file" + ad_script_abort +-} ++} + ++if { ![exists_and_not_null return_url] } { + ReturnHeaders text/html + ns_write "<html><head><title>Upload Log</title></head><body><h1>Upload Log</h1><hr>\n" ++} + + if {![empty_string_p $upload_file]} { +- ns_write "starting to load images from file $upload_file<br>\n" ++ if { ![exists_and_not_null return_url] } { ++ ns_write "starting to load images from file $upload_file<br>\n" ++ } + ns_log Debug "made directory $tmp_dir to extract from ${upload_file.tmpfile} ($upload_file)\n" + set allfiles [pa_walk $tmp_dir] + set remove 1 + } else { +- ns_write "starting to load images from directory [parameter::get -parameter FullTempPhotoDir -package_id [ad_conn package_id]]<br>\n" ++ if { ![exists_and_not_null return_url] } { ++ ns_write "starting to load images from directory [parameter::get -parameter FullTempPhotoDir -package_id [ad_conn package_id]]<br>\n" ++ } + set allfiles [pa_walk [parameter::get -parameter FullTempPhotoDir -package_id [ad_conn package_id]]] + set remove 0 + } +@@ -58,10 +65,19 @@ + pa_flush_photo_in_album_cache $album_id + + set page [pa_page_of_photo_in_album [lindex $new_photo_ids 0] $album_id] ++ ++if { ![exists_and_not_null return_url] } { + ns_write "<a href=\"album?album_id=$album_id&page=$page\">View the images</a>" + ns_write "</body></html>" ++} + + # Now that we are done working on the upload we delete the tmp file + if [info exists tmp_dir] { + file delete -force $tmp_dir + } ++ ++# HAM : added return_url ++if { [exists_and_not_null return_url] } { ++ ad_returnredirect $return_url ++ ad_script_abort ++} +Index: www/photo-add-2.tcl +=================================================================== +--- www/photo-add-2.tcl (revision 92) ++++ www/photo-add-2.tcl (working copy) +@@ -15,6 +15,7 @@ + {description [db_null]} + {caption [db_null]} + {story [db_null]} ++ return_url:optional + } -validate { + valid_album -requires {album_id:integer} { + if [string equal [pa_is_album_p $album_id] "f"] { +@@ -70,4 +71,12 @@ + # page used as part of redirect so user returns to the album page containing the newly uploaded photo + set page [pa_page_of_photo_in_album [lindex $new_photo_ids 0] $album_id] + +-ad_returnredirect "album?album_id=$album_id&page=$page" ++ ++# HAM : added return_url ++if { ![exists_and_not_null return_url] } { ++ ad_returnredirect "album?album_id=$album_id&page=$page" ++} else { ++ ad_returnredirect $return_url ++} ++ ++ Index: openacs-4/packages/ajax-photoalbum-ui/www/download/index.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/download/index.vuh,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/download/index.vuh 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,26 @@ +# /packages/photo-album/www/images/index.vuh +# @author Tom Baginski, bags@arsdigita.com +# #cvs-id $Id: index.vuh,v 1.1 2009/04/11 15:56:13 hamiltonc Exp $ +# +# serves images +# +# expecting a image_id as path_info + +# wtem@olywa.net, 2001-09-24 +# fully reworked + +regexp {^([0-9]+)} [ad_conn path_info] match image_id + +if {[string equal [ad_parameter CheckPermissionOnImageServeP] "t"]} { + ad_require_permission $image_id "read" +} + +ns_set put [ad_conn outputheaders] Content-Disposition attachment + +if {[catch {cr_write_content -revision_id $image_id} errMsg]} { + if {[string equal $::errorCode NOT_FOUND]} { + ns_returnnotfound + ad_script_abort + } + error $errMsg $::errorInfo $::errorCode +} Index: openacs-4/packages/ajax-photoalbum-ui/www/java-upload/ThinUPload.jar =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/java-upload/Attic/ThinUPload.jar,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/java-upload/ThinUPload.jar.bak =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/java-upload/Attic/ThinUPload.jar.bak,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/java-upload/ThinUPload.jar.bak 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,3011 @@ +PK����XO|7{y�l ��������META-INF/MANIFEST.MF�XI��Z�WD��\Ԣ;�L@p�"z�"� Ƞ���U�2���|ݯ�����p8��w>$; +��(_O /�~�߰�_��O��3���K�Y���m���6v ��M���� +�'_�x��V�/R��h�$���o����|�ʒ�;��_$;H_��]/u�/x�=x/vU��.����_U{_�|�r���%����o��ˋf /P|��qk���o��/.#����e��<i~;�7|i\�n��p.L����4*�����[�B�iPO���}�������X;gC�"\�ű����jN��.LEh{ �WX�ʳ]��N"6�jO��X6�)P$�L�A���a��߫�|�ܶ��ncO��z��Ve�[�$05�����ѣ�Y�a��~'���Y������kO���?>���|ҧ�x����'����x/�`�q���Wn4l��&�u�>�M;�#X�1Q��i�)'/�ӽ[Qx��P^�� +�A�P��>�=�sA�� ;x�@�y-����n���c%�C��ɠPV��5�,��raY\�u����=�������mS�]�ax\AY�еJ����a����w�vϋApV*w�(D�T�����l��`�Y��K���1[��� h�50Dե�*} D��?��1.2�/ј�v"����`n��cS�����)p�^��vi����Ez�fn3-��3x��eq��O)Er� E���oH�Q�X�R��dm[9�c"�<�_�Y�r��h��w�+��z����W1��'̘�SEB�o�A<�>�v�Q���O�݊� Zp]��#��k*�L�ˆ:��;���:��M���h7��;�p���"c;���Z�:��V�cy����z^�d����S�5�e##��#�)���`�Ukhk�OՒ�~��#6sqV.N�#_V���X},�!�u�ŠQ4F�b��=��r�+�+���!���,�}@��n��v� �ˮ�����vJ�1�}D:X�!ɥ��g_R����� �-wcZ�l0�YS�%F�w��9����{��'�M+}l��s��}��p�^���8��>�1��A�;<%�j +�<PT��š>��ˇ������M�٠�p0e_��ED�뽺:%�װ�Ub8����O���W�T�Cv��l5�u�(�yu3e��NQ�[�����&��5�n���n +m�%SZ����:ns�.�fpk�|5����u��x����W� � +�y�aq���g���VRy��~�8"���e�/����9�-��UӗkΏiׯ�:Z:y������`��춋ݔO���5�$�k�Q#���| umcL�]{\�i���b(��wf-���U%��Ҧ�����iп M(T��.g�/�����D� q3�:�XE��!|M�LT���w>&�@���UђSBw����"��W�KD�i���T�+����A���:)ڜ'�!��)<RL�o>���L.W��k���I�H��r�P�Xכ�N�çh +�(:^�b�πAp��R뭫�T��cN�-��_�e>ܦ����0m����nM�bܸ��0q����L�/ n��2CmC-�w�fγ�Vǜ��� +��L�iȎ�"Yu8Ώ3��:�FF׳�q%�}r^"]r���g�s,�@.�����D��F�.6����o��Pt����N�Ժq*�Y +S���8\��U��lI�8~]�e���zPkS������IW39,oWKߵ�L�O.-�ҭ�S����߽7:#*̦1Bw6�/wἸ�n��i�|�<d��\�t�Ѧ�>V� +WV�>���^ӻ�`ע�eWV%T�$�����w$w�$ +���5�r�8����0J�����RF�!��%��ZӶs�r��IاG�A٫��^^��˗<{���(�6��U=�Z�wK��G����p����N�*$�a^�ڨ��خ5�F�n����<v�J��}L��Kc��'U�H��'���yq����g\+��Ƙό��)[r�k$CI���uV�@��/����W��!��^����{V[:1�����D�ۉt:���[�@���E�W��X�y���F�xtm~+sve_�c��T��۪���a�.�j��ՖgÒ6~����Xn(x��@��"L�⩐�&��Q�x�c��9\�G��;Q���x�YGd�q��I������e���6�1��|�'�V��cc�N�fΩ0��&�X˩L}"�L��)� �XH\A|Ie���Sv�=�ϥ~4�(������T=�f![�B���p�i�Ѱ9Ɛ�؇�4���Y��*�#�O���|�ZPGy���%w��8��U�^��3���4 +/Mk5����#$*\�!�(������PK���W��8���������������META-INF/WIHLICER.SF�X˲�H�WD��Ԡ;�{@E��@y("*aR�� ��L@���튪����b�~��v�0w� +�o&@8�����;��o<n �o\��c�N�I���u��m�!�\��ɹ����;J���2 +.�m�< +~���olY��\���&9���H}�GI�4�$8�ȗ�Ӎ��������l�ȗ����#�8\e�}���T7���d0v۷������2�'��o�Y��%��(M5k9�sI�j����`F"��9(I +�����<*!��"}�R��/,��K�>ל +�P�[��n?B�=�+����O�J�CN�g�>Cz���@ �%�t�f7�9F�ڮHQ㤚$��]�쒒{@��'�2JIf̍�g'�wC� +����I�/�C��r# ~A./Q�ɪH��z�,gm +���?F��G���7�|�Gq� �bu2��s��M��=ƛ�]��t���&����F����P�hCC�T>��� �A�C��/�蟔���1���7��i�F����&�<[A�MA7�{�X!��zX�,H�!ɹ�d�mwRe`Ј���� +���jD-�J5��� /1�#o��C'�v��?��ڽ#��@̳P^��Xt����c< 8�?�&b�bS���-�=�/ȥ6���a<�/3Y�n\B��'GA�x���+[�c��ߏ��7���"~����.�Pיp����C)��E�:�g���rlo}����Y����i�8å,LJ��?!���F��P��ޕ���;[����=��T��;�Q�n,?�Y�1�f����1��O����0f<b��1�{n^ptm�;�@�;� +����6�V�! +���,7�l�D���v����Q��=��*\�ì�Tw�\���>��M�zG�k:|�I���U�Nl{;�0�ﰴ��V_�q��j���[6[)({m��/��!��� +�D̯|P���W�{���B�����v�4YX�ȍm������ +��$� ��1�\�͡�ʚ�f�q�J~V}J�l���Z+�\�!�uUT� -�U}Q%w� �s��9�����Y���&c_f<�pwF�ĝu��R��Q�a�@�[G�ީ�����Z�P���C���)��+�I�ҝ�j�j��F1 ��� �,Abs�\�=��%1�Xu6�����T��K��&��d�U�3K�M��_�B���ř��f�ı8�Uڤ�eI�����A�Y�zQ����TbOZ���k�WK+܉�T�8T�d4��R���Zռ��O2�D���LѺPd�[�Q���ވӶu�f�ϵ�mO�57E��|��5�[Nj0�L2-�N4Ӆ�uRQ�h4fXȹ��"�a]*ܧ��;��S���H�&Y�����o�ӵ|*����:�̍�uH�jj�(9����o����;A<�t+�F�^<�mR���f��6_��0���F�'�#���M*�rS#٭W펗�C%��VT��)v�b i�������<ݘ�4]�����]�aL�i� +ĕN +kMd�u�k���OD�{F�xƪ�V�R\��v%��]PA�ံ<����v��d#xJ4�7/�G)/g�}6+TB~���㷔���`p~��xL��L�x�]��#ᇘ�4�+jWS0��8�G�z��ģi�3R�*lԴo�y�n��쓠���G%9�8l ee�f�T�Kއ�(�s���Bt�{��⎕����mY�N�)�q�������6!ҍ��H=G�b��&\���� +�4r.j��;{��|z�g��`��"��ŏ���y�Tcw9o�y��h +�T½ׇ�$m�����1������O��v@c-�.Q��nL}���u�t+�����O:�i��~�ߞ��ź>9+e�FP3���"ύ���ߺ�KH"�1J$�Jn{xO�|,��y�ww���KP�*�mCOuC��%k���i�ǠLFᯖ���>9�psW1Lz������d�}ȀC�9��18c_�v��U�q�r�W"0��O�j��rc�� +�U�Ī��O��eX���ê�����er$P��D����K���W]=�Hr�x<��r������t�SeY�j��i"� +/��7;E>1�PM}\x[a�7[ۚ�̛J��!s��x'�>���]��.hvn���DD.� +>�ɘ'<�P��" +���8sD�9�c�\S�G%��t�|�gB>�[qy��~�h�#4-&��!v��0�uh�a�p�2����6ل��Tx�W�p��yM��ۿE�W��E�)�.7��X2��&�[��c��>��\�{��h�:L�,Q�Ph{�IsϜ��!> ��F���ݥ�5�?�2B����}���J-C��ۭu9E�l�����sMY�MS'�xB�a�W����OΎ@�禳��e�PK���k �����PK���W��8���������������META-INF/WIHLICER.RSA�ViTWef��(!D�$l�J��ۂ��vP6��8�$��ţ���-"�U��h���[7@+JQO�V(�T�(��� +��$�h{��?�?3��}3�}߽s� +�h��@�3�kՆW�ڰ� t0�1�w`*����AZ5�s�F��5�I�����z���h���4�}�L��9= +5LE���%~��#�!�:21>C��D2�"-Y�Kx�Õk�x!��pI���V`�<AJE~`�� ����%�"��l7/7�% a�k�"P�H��e���I�C�qC�`�~q����5ɸ�Ĉ��'x���1��h��!���1��lX�2h���n\��������]���]X�--���Q�43��&j�~U7���b��P{s�!Y�ak�����a�Ɍ��7�v���)�\�췔��?��}��㰚�����M�y;�Nk7��`�c��Ֆ]x��@З�+@բ�� +A���P<���E�B�s�R��-J������,E��>Y��ڋ�ؐ�(��ƘI#MG�!qE��0�ѵ�K�p�9 k8��7��iDq��vH�Y�L�H���1Ś@H�ܟ�DA`��[ZC���f��9Yi��;���ϔ�Ȑ��}3��������MǙ�#�D��ܮ�G��̴��.;dK����i&>mF�N��� J�" _����Do�ڿ +�'a��\w���m�sY��ӂ����A64v�+bZ�F�c��4~����7�0 ���4��JL.��S1�����$!/R�!E��J�N�ZG"A�G�TmD�\���%�J\&�E`�t\�)xs�t\A��|]�OyP�K��RtTLN�K���u3!�e����1�� +aD/w�]��25��n��2�o����-lS�-��|8��{S���n·��ݼ�\E�}Ox?��\�Sh��(���^b�/��ySB�I�|���y�=3�DžW���p����$e �;^�zk?D,�ϦVobW���s�C�����Cox6���v��8��C�*���8g���(�KK?���o��)^�L�!��p�:bq���Ɩ���phM?�_t�Ԓ����X6}A�.Ԟ�__����Җc>auo�LR��}w��̷�v>V���z�c����wYM�Y�>�Ĥ��ũK%ts�*a�U��X������)�̬ٺ�� +JB�Q��GQ�.��?1M\nԑ�cײrz�:K�jZz^�4���kjƠ㾘��������9��!Ap��f^[�ɣC�m��������2�K��|���*�� +?��������k%��\�[|���m�RG�ʯ�����|�l{��l�HBUU0�,Ј�9���DRi���ߕS#���f$����"�h,��י��s�D�D�@4�Db����kt +��/.+\���+����X��3���/�~d�Cv��Sg��]���ۓqC!��&���(�Z����V��V*��r�7K��۞��f�J[�m�M�m�p��U�`ma����9|ƭ�i�+�ԁ�����Os��,�{�Vdv�2�,g�v��o�w�j��� d�����������7�FQm�u���kw\��[U9��4+�!����W��N��=vO��]�t��[����y���O�މ�a��\�9���D�}e_ +�dQ��f�m?�sw�g�1� + +���;�U4��<�"7����F�[��e�GR���PK��R����� +��PK���XO|7���������������META-INF/SOBAYLI.SF�XK����O���^��� �E��������<��B�<���_��>fz���!+O�ɓu��«j~X��?�&�ԯ��x~p���;���~�ǩ.�v�� nqr�&��?��$���8����8��G\�`� +ŗ����--8�`&�S�}J�֠f�G���~��o +t��g�X'��v�4��9��&S�;���y9����&s���{�����U1����X5q_�b!N�L�ดD�Ap�'8�$�H1Y�����O�,� +"9/�w?��g���A%:��D��b��i��c�z@���Yݨ�pf��킓& H�|����B��^����XS��uNjHb-<4̮)y�4(����a����~�"�wt�ic�z�Z��ʻDF�w�O��5.�.@�.�����=�yG����ۤ�xQQŶ��b�,�WdS�A&���C���|��a/��vE�7�>߀f��%Z�T��L�����)���"�ϗxD~R����5�s����|e�ν,{������k]�0 +��`��\�N��L7Q�*I�#B��0�-=�uU�*�V4�7��R0��7j�rv�����9 +�E��?xۼz�w�B���7��Z`�G�b~�cэ�����,�0��Y�Y�@Q�m59���hİ@ �b�4�K���錿.du��u��^1 +��â�~�)�ok����������B���(&Е�&�ס<(E}��^�v0��:���@p�������i^Fΰ�ֿM{�nq�m� ,X���v����Z���ܵ�JLJ����HF`8[#�A#�eO>e��bs^kC��>Fa���J�� �nYrtc�;�@�{� +f��6�Nj +v��l/���T�O�n�o���ѻ���U7̺O�S婐�e�(#/�=A*t(��ݖ�PK�,3P +����@�LKBR���D�oP-��B��H/����P��X�CRo�JҮv�+'��S\��e}�'5�����^�^�h��^�p�4��E�X�'���t�mʺ�d%�i���M>zP�Ը�6��_���Wq���j'�nW�{^���6�K����m�\M����@f|��p'��]��Q�߳Z��&���}P1�0km���i��>giK"/7��{k�m�[�"�K�ܺ�M,�K3��j�/:�,���[p*�s�ήQ���5V�c���h!������Y;I�D\�&k��"������p�,��B�����q �e�H'���s�~ʯ�ո1$��q���i�����ix_0�B���ʐR�2�O�ͤ}:��`&YW�C3毵�oϾ��D����5?�nf2�B3]��h�WJZS�d2eX�y��"�i_k<���7��3���Hlf�آ�e��o��|R����z��Mu%� +��j�|��<��r��'�'�g֞kG��1ʧ�K�rV7�|&��� +}��c����݉�R�5и���M���XI�S?�r����EBV<'9�$6}_CwF�g��g72���5J+5��љi+D./:Ǯht}!Z��o�3vv������J��JZ�#������ߦ���iؖ��b���^�Ţ��s%��ykF +K�����n��<�Z;A���A�1�n5czx���frljC<��� %���Vˆ������> ��Q�zT���ˆr�U7�y1ό!�>�F���}����݃�%Uo�n�ֈ��jr��I�D�;�5�W�k#bì)鉴K��(v��Ia�~k�[#��^7��'Z/�@��V +�|tʱ�;����g��N>$��_/�r�P+�Ҵ���ᾂ6���yLa�C��˳��=�Y۸D�PԿp?��̽c�9�p����QK- ��<�}���Ri��F]2f���y~?f���!��W]�%$��5�G�p|| P1�Ee��|��<�T�����s��gťd]� +����$���{�'�g�]������rGϊ�7�[�2L���cQ���g��I��r.�7)�h�:<7cU�k ����LLL���6Wo���~���U�F��P|�)oͩ�q��T�&B�C��Z������ЈmR����.���a[��ҙ���B2T|A�)O�αs&W�N"����αg���U�hAk���.�t>V���9���dY���mc���1,�{U>3��G +N����p�!�'h^�(7G��)8QNж����xdɗ��+ +�E� +�B�>������� \�F��N�&�lFrK*:�B��Ʋ!���/�Vư���z��Y�%�F���>ϞC��?�_�� �._��.Ru��v6�����b�y�����Do=�!5�����T�������s�e D�As6�k0���,-W��6���_�N������L�7Rq錿����E� +PK���._ �����PK���XO|7���������������META-INF/SOBAYLI.DSA3hb�b��j�h����δ��Eڠ�E���ѐۀ��U���I������qA��A��A�}&w�㓀��@�s,�@�e`�̡,l�L��0�0������ ��.������Z\�Zd(`��f�OJ���4�5��p�秕�'�*������������������s +��y +� + +�,M�L���\##3(w���ĸ�u`A���3562��n�-���5G�͓���ټwa8,g߰-P-�5�A)�w�moį�G��2�vzvh��F�Y��Oi ۳g,]2��j�C��W^���������V,�g�����Q��L�!�Qb���~^��x]��'%fɹ=�3�2LO�U�>�i�ΦE�[�?D�|9�����f��;�gu�َ�S���e���g��-{Sz`dx߮+��� +��x�*����~�Ө�IJ�6bU�!5�����tb��z�_��I'U1�X�Y�qߊ� �+��?�z:�mRwZ\Cu�j +�����Z̍� w|�"+�\{H����*9Q�"�6�����o��j�<x�8�-)S�h�d�cs����������Iz|������j],�mH�Z �7�{KWr��~w�"��ɲ!F�=/X�/�m��*������_�H_k��� +%a3�3�0��u(KI������g�U'���l>�$���Y�v����[���~Q![�6�3h< +�Ku����%'��!+��C�\������<y��y1��y����e�t��贍r�����q!S��PKݚ����.��PK +�����WO|7������������ ��META-INF/����PK +������N|7���������������com/PK +������N|7���������������com/radinks/PK +������N|7���������������com/radinks/dnd/PK +������N|7���������������com/radinks/dnd/events/PK +������N|7���������������com/radinks/dnd/https/PK +������N|7���������������com/radinks/dnd/util/PK +������N|7���������������com/radinks/net/PK +������N|7���������������com/radinks/sftp/PK +������N|7���������������com/radinks/sftp/common/PK +������N|7������������ +���com/thinfile/PK +������N|7���������������com/thinfile/upload/PK +������N|7���������������images/PK +������N|7���������������res/PK +������N|7�(������"���com/radinks/dnd/BrowserProxy.class������-�7 +��� �� +�� +�� �!�" ��#�!�$ ��%�&�'�(�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/BrowserProxy;�detect�info�%[Lcom/sun/java/browser/net/ProxyInfo;�ex�Ljava/lang/Exception;� +SourceFile�BrowserProxy.java� +��java/net/URL�)�*� +�+�,�-�.�/�0�1�2�*�3�4�5�6�java/lang/Exception�com/radinks/dnd/BrowserProxy�com/radinks/dnd/ProxyDetect�postLocation�Ljava/lang/String;�(Ljava/lang/String;)V�%com/sun/java/browser/net/ProxyService�getProxyInfo�5(Ljava/net/URL;)[Lcom/sun/java/browser/net/ProxyInfo;�"com/sun/java/browser/net/ProxyInfo�getHost�()Ljava/lang/String;� proxyHost�getPort�()I� proxyPort�I�!��������� +������3�����*���������� +��������������������������������5��Y*������L+�� +���*+2�����*+2����� ��L�����0�3� +��������������$��0��3��4� ���� ���!����4��������5����������PK +������N|7�8�X���������com/radinks/dnd/DND$1.class������-�) +�� �� �� +��� �!�"�this$0�Lcom/radinks/dnd/DND;� Synthetic�<init>�(Lcom/radinks/dnd/DND;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�Lcom/radinks/dnd/DND$1;�actionPerformed�(Ljava/awt/event/ActionEvent;)V�e�Ljava/awt/event/ActionEvent;� +SourceFile�DND.java��#�� �$�%�&�'�(�#�com/radinks/dnd/DND$1�java/lang/Object�java/awt/event/ActionListener�()V�com/radinks/dnd/DND�textArea�Ljavax/swing/JEditorPane;�javax/swing/text/JTextComponent�paste� �������� �� +����������� +���4����� +*��*+����������������������� +��������� +���C�����*�������������� +������ +������������������������������ +��������PK +������N|7�V(��������com/radinks/dnd/DND$2.class������-�@ +�� �� +�� +�!�"� +�#�$ +�%�& �'�(�) +�*�+�,�-�this$0�Lcom/radinks/dnd/DND;� Synthetic�<init>�(Lcom/radinks/dnd/DND;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�Lcom/radinks/dnd/DND$2;�paste�()V� +SourceFile�DND.java��� +��.�/�0�1�2�3�4�5�6�7�8�9�:�;�<�PASTE�=�>�?�com/radinks/dnd/DND$2�javax/swing/JEditorPane�java/awt/Component� +getToolkit�()Ljava/awt/Toolkit;�java/awt/Toolkit�getSystemClipboard�#()Ljava/awt/datatransfer/Clipboard;�java/awt/datatransfer/Clipboard�getContents�8(Ljava/lang/Object;)Ljava/awt/datatransfer/Transferable;�com/radinks/dnd/DND� grab_data�'(Ljava/awt/datatransfer/Transferable;)V�java/lang/System�out�Ljava/io/PrintStream;�java/io/PrintStream�println�(Ljava/lang/String;)V� ������� +�����������������4����� +*��*+����������������������� +������������N�����*��*���������� �� +����������������������������������������� +��������PK +������N|7QY9����������com/radinks/dnd/DND$3.class������-�+ +�� �� �� �� +��� �!�"�this$0�Lcom/radinks/dnd/DND;� Synthetic�<init>�(Lcom/radinks/dnd/DND;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�Lcom/radinks/dnd/DND$3;�run�()V� +SourceFile�DND.java��� � +�#�$�%�&�'�(�)�*�com/radinks/dnd/DND$3�java/lang/Object�java/lang/Runnable�com/radinks/dnd/DND�textArea�Ljavax/swing/JEditorPane;�response�Ljava/lang/String;�javax/swing/JEditorPane�setText�(Ljava/lang/String;)V� ������� � +����������� +�����4����� +*��*+����������������������� +������������@�����*����*�������������� +������������������������������ +��������PK +������N|7��VZ��Z�����com/radinks/dnd/DND$4.class������-�V +��* ��+ ��, ��-�.�/�0 +�1�2 �3�4�5 +� �* �3�6 +� �7 +� �8�.�9 +�:�; +�1�< +�1�=�>�?� +val$poster�Lcom/radinks/dnd/PosterBase;� Synthetic�val$fileList�Ljava/util/List;�this$0�Lcom/radinks/dnd/DND;�<init>�D(Lcom/radinks/dnd/DND;Lcom/radinks/dnd/PosterBase;Ljava/util/List;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�Lcom/radinks/dnd/DND$4;�run�()V�monitor�%Lcom/radinks/net/ProgressMonitorImpl;� +SourceFile�DND.java��%�������@�A�B�java/io/File�C�D�E�F�G�H�#com/radinks/net/ProgressMonitorImpl�I�J�K�L�M�N�I�O�P�Q�L�R�S�T�U�com/radinks/dnd/DND$4�java/lang/Thread�java/util/List�get�(I)Ljava/lang/Object;�com/radinks/dnd/PosterBase� +setParentPath�(Ljava/io/File;)V�com/radinks/dnd/DND� +inProgress�Z�size�J�setBytesToRead�(J)V�setMonitorType�(I)V�()I�'com/radinks/net/AbstractProgressMonitor�setFilesToUpload� +setMonitor�,(Lcom/radinks/net/AbstractProgressMonitor;)V�doStuff�(Ljava/util/List;)V� ������������������������������������������>�����*��*+��*,��*-���������������������� �#����$�%�����������V*��*���������*������ Y�� +L+*������+�� ++*��������*��+��*��*������������&� �����$�/�4�B�J!�U"��������V� �#���$�2�&�'���(����)�"��� +��������PK +������N|7;�?x�0���0�����com/radinks/dnd/DND.class������-^ +��>? +�> ��@������� ��A ��B ��C ��D ��EF +�> ��GH +�K ��LM +�> ��NO +�K ��PQ +�R ��S +TU +VWX +�Y +VZ +V[\ +]^ +�_ +`a +bc +Td +��e +fgh +�i +fj +kl +mn ��o ��pqr +�1K +stu +��v +��w +��xy +]j ��z +{|��} +{~ +���� +�A���� +�� +�� +����� �� +����� +��� +��� ���� +�R�� +�UR� +�R� +�R�� +�Z��M�� +�v� +�R�� +�Z��M��M����� +����� +�� +���� +�l� +�� ��� +]� +�Z� +�Z�� +�R�� +�Z� +�Z� ���� +��� +�v ���I +�� +�� ������ +�� +���� +���� +������� +������� +��� +��� +��� +��� +��� +T�� +`� +��� +�� +f�����scroll�Ljavax/swing/JScrollPane;�uploadLimit�J�singleFileLimit�location�Ljava/lang/String;�auth�PLUS�I� +ConstantValue����STD�����LITE�THIN_UPLOAD���d�THIN_FTP_UPLOAD���e�THIN_IMAGE_UPLOAD���f�THIN_PUTTER���g� +THIN_SLICE���h�THIN_QUE���i�THIN_SINGLES���j�THIN_ENTERPRISE���n�sig�size�props�Ljava/util/Properties;� +inProgress�Z�pwd�applet� Lcom/thinfile/upload/ThinApplet;�response�uploadStatus�jm_paste�Ljavax/swing/JMenuItem;� +pasteListener�Ljava/awt/event/ActionListener;�sSIZE_EXCEEDED� mlistener�Ljava/awt/event/MouseListener;�rman�%Lcom/thinfile/upload/ResourceManager;�textArea�Ljavax/swing/JEditorPane;�wait_cursor�Ljava/awt/Cursor;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/DND;� +setJpopupMenu�(Ljavax/swing/JPopupMenu;)V�Ljavax/swing/JPopupMenu;�uploadCompleted�'(Lcom/radinks/dnd/events/UploadEvent;)V�e�$Lcom/radinks/dnd/events/UploadEvent;�uploadCanceled�str�redirect�jsNotify�exe�Ljava/io/IOException;�ex�Ljava/lang/Exception;�drop�%(Ljava/awt/dnd/DropTargetDropEvent;)V�dtde�"Ljava/awt/dnd/DropTargetDropEvent;� grab_data�'(Ljava/awt/datatransfer/Transferable;)V�2Ljava/awt/datatransfer/UnsupportedFlavorException;�file�f�Ljava/io/File;�j�data�files�[Ljava/lang/String;�fileList�Ljava/util/List;� +currentFlavor�"Ljava/awt/datatransfer/DataFlavor;�i�trans�$Ljava/awt/datatransfer/Transferable;�handled�dataFlavors�#[Ljava/awt/datatransfer/DataFlavor;�getUploadLimit�()J�setSig�(I)V�getTextArea�()Ljavax/swing/JComponent;� getScroll�()Ljavax/swing/JScrollPane;�prepare_upload�(Ljava/util/List;)V�poster�Lcom/radinks/dnd/PosterBase;�thrd�Ljava/lang/Thread;�iter�Ljava/util/Iterator;�setAuth�(Ljava/lang/String;)V�getAuth�()Ljava/lang/String;� setApplet�#(Lcom/thinfile/upload/ThinApplet;)V�getResponse�setUploadStatus�getUploadStatus�()I�calcSize�(Ljava/io/File;)V�flist�[Ljava/io/File;�setProps�(Ljava/util/Properties;)V�uplimit�getProps�()Ljava/util/Properties;�setPwd�getPwd�getProperty�&(Ljava/lang/String;)Ljava/lang/String;�name�isPropertyEnabled�(Ljava/lang/String;)Z�val�createPoster�()Lcom/radinks/dnd/PosterBase;�allowFTP�()Z�allowPUT�cleanUp�setResponse� getApplet�"()Lcom/thinfile/upload/ThinApplet;� +SourceFile�DND.java�����javax/swing/JScrollPane�������������������������javax/swing/JMenuItem�����com/radinks/dnd/DND$1���InnerClasses��������#com/thinfile/upload/ResourceManager�����com/radinks/dnd/DND$2�����java/awt/Cursor�������������java/awt/Insets�������� text/html������������paste. +����������GAn error occurred while uploading, some files may have been transferred�com/radinks/dnd/DND$3 +�jsnotify-.����8���Upload canceled�����java/lang/Object�java/lang/Exception�java/net/URL�javascript:uploadCompleted();���java/io/IOException���� !"#$%&'�java/util/List()���0java/awt/datatransfer/UnsupportedFlavorException*�java/lang/String� ++,�java/util/ArrayList�file://-1.�java/io/File�/�os.name0�Windows12�file:3646567869:"#�Maximum upload size exceeded�err.noUpload;<=34�com/radinks/dnd/DND$4��>?@������ABC6D�.$/�..EFG ����� +max_uploadHI2�urlJ����KLMNO�����yes�1�com.radinks.dnd.FTPPosterPlusPQRS:�com/radinks/dnd/PosterBase�ftp://56�com.radinks.dnd.FTPPoster76�method�PUT�com.radinks.dnd.Putter� resumable01�"com.radinks.dnd.ResumableRfcPoster�com.radinks.dnd.ResumablePoster�com.radinks.dnd.Poster�com.radinks.dnd.PosterPlus&'TU+VWXY� +embed_monitorZ������[\]��com/radinks/dnd/DND�java/awt/dnd/DropTarget�%com/radinks/dnd/events/UploadListener�(Lcom/radinks/dnd/DND;)V�java/awt/Component� +setDropTarget�(Ljava/awt/dnd/DropTarget;)V�javax/swing/text/JTextComponent�setDragEnabled�(Z)V�(IIII)V� setMargin�(Ljava/awt/Insets;)V�setEditable�javax/swing/JEditorPane�setContentType�getViewport�()Ljavax/swing/JViewport;�java/awt/Container�add�*(Ljava/awt/Component;)Ljava/awt/Component;�javax/swing/JComponent� setBorder�(Ljavax/swing/border/Border;)V�repaint�setComponent�(Ljava/awt/Component;)V�javax/swing/AbstractButton�addActionListener�"(Ljava/awt/event/ActionListener;)V� +getMessage�setText�javax/swing/JPopupMenu�0(Ljavax/swing/JMenuItem;)Ljavax/swing/JMenuItem;�"com/radinks/dnd/events/UploadEvent�javax/swing/SwingUtilities�invokeLater�(Ljava/lang/Runnable;)V�netscape/javascript/JSObject� getWindow�4(Ljava/applet/Applet;)Lnetscape/javascript/JSObject;�call�9(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;�java/applet/Applet�getAppletContext�()Ljava/applet/AppletContext;�java/applet/AppletContext�showDocument�(Ljava/net/URL;)V� java/awt/dnd/DropTargetDropEvent� +acceptDrop�getTransferable�&()Ljava/awt/datatransfer/Transferable;�"java/awt/datatransfer/Transferable�getTransferDataFlavors�%()[Ljava/awt/datatransfer/DataFlavor;� java/awt/datatransfer/DataFlavor�javaFileListFlavor�equals�%(Ljava/awt/datatransfer/DataFlavor;)Z�getTransferData�6(Ljava/awt/datatransfer/DataFlavor;)Ljava/lang/Object;�java/lang/Throwable�printStackTrace�stringFlavor�split�'(Ljava/lang/String;)[Ljava/lang/String;� +startsWith�trim�(Ljava/lang/Object;)Z�java/lang/System�indexOf�(Ljava/lang/String;)I�exists�isEmpty�iterator�()Ljava/util/Iterator;�java/util/Iterator�hasNext�next�()Ljava/lang/Object;�javax/swing/JOptionPane�showMessageDialog�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)V�D(Lcom/radinks/dnd/DND;Lcom/radinks/dnd/PosterBase;Ljava/util/List;)V�java/lang/Thread�start�addHyperlinkListener�((Ljavax/swing/event/HyperlinkListener;)V�isDirectory�getName� listFiles�()[Ljava/io/File;�length�java/lang/Integer�parseInt�java/util/Properties�com/thinfile/upload/ThinApplet�getDefaultLocation�java/util/Hashtable�put�8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;�java/lang/Class�forName�%(Ljava/lang/String;)Ljava/lang/Class;�newInstance�setGuiComponent�(Ljavax/swing/JComponent;)V�addUploadListener�*(Lcom/radinks/dnd/events/UploadListener;)V� setCursor�(Ljava/awt/Cursor;)V� removeAll�getBrowseButton�()Ljavax/swing/JButton;� +setEnabled�!����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������h����������������������������� ����������e������*��*��Y����*���* ��*�� * �� +*��*��Y�� +��*��Y*����*��Y����*��Y*����*��Y����*��*��*����*����Y����*���� *��!��"*����#*����$W*����%*����&**����'*��*����(*��*��W*��W)��*��+���������b�������?��A��F��i� �k�%�x�*���5���A���L���X���d���l���t�����������������������������������������������������������������B����� ++*����,W��������� +������ ����������� +��������� +����������������������M*��*+��-��.*��.��*��/*0��.��*��/*��!��"��1Y*��2��3*4��5��*��6*��7���������2��������� +���������"���'���0���;�D�H�L���������M���������M����������������w�����%*��/*��+��-M*��,��8��,��9*��7�������������� +�� �$����� ����%���������%�����������������������+��������������������������������������������������6*��:��1*��:��;<��=��>W��L*��:��@��AYB��C��D���M������?��1�4�E������"���%�)�5�,�0�14�43�57����� ��5�����������������6�����������������J�����+��F*+��G��H������������A�B� +C��������������������������������������C=+��I�N6-��2-2:W��J��K��+=*+��L���M��N� +:��O��:��O���W��Q��K���+��L���R:S��T:��UY���V:6 ���� 2W��X��( 2W��T2��Y: +��ZY +��[��\�W��c]��^_��`��U 2a��X��( 2a��T2��Y: +��ZY +��[��\�W��#��ZY 2��[: + +��b�� + +��\�W� ��c��c���=*��N����:���ͱ��)�8�;�E�)�8�E�P�]4:�?��������(��M�O� Q�S�[�'d�)g�8q�;i�=l�Bq�En�Gp�Lr�Ot�]x�jz�s�������������������������������� +���"�,�.�4�7�:�<QB���������=�������G�������������� +�������� + +������ +��������� �j��������s���������������<��������#���6�����C��������C��A���� :�� ������/�����*������������������������������� +������>�����*�� ��������� +������������������������������ +������/�����*�������������������������������������/�����*�������������������������������������������c* �� ++��d�M,��e���*,��f���Z��g���*�� ���!*�� +*�����*��hi��*��j��*��kN��lY*-+��m:��n���������*� +����������%�: �L�Q�]$�b&�����4��Q���]�����c���������c�������W��������>�����*+��o��������� +���.�/������������������������������/�����*��o������������7����������������������J�����*+��:*��+��p������������@�A� +B������������������������������/�����*��.������������I����������������������>�����*��/��������� +���O�P������������������������ !������/�����*��/������������T����������������"#������������n+��q��\*�� ��T+��rs��t��+��ru��t���+��vM>,���+,2��q�� +*,2��g��*Y�� +,2��wa�� +���է�*Y�� ++��wa�� +���������2���`�c�'e�(g�-h�5j�>l�Hp�Wh�]s�`v�mx�����*��/�.����-�0$%����n���������n������&'������������m*+��x*y��5M*�� �� +*�����,��*,��z�h�����N*+{��|��}*��}��*��}~��t�� **��:����}*��}��+{*��}���W���!�.�1�?������:�������������!��.��1��2��<��O��Z��a��l������*��2����������m���������m�������a(����)*������/�����*��x�����������������������������+������>�����*+������������ +������������������������������,������/�����*��������������������������������-.������N�����*��x���*��x+��|���������������� �������������������/����01������d�����"*+��5M,��,���t��,���t������������� +����������� ����"���������"/�����2����34����������L**{��5��}*�� e������������L���*��}���X��1*�����(*�� ������������L�������������L����*�����)*���5�� *���5���t������������L��^*������**�� j������������L��=����������L��.*�� ��*�� g������������L������������L+*��x���+*�����+*������+*��o���+*�����M,��O+����]�?�^�?������r�����������$��0��7��>�M�\�^�|��������!��&��(��,��1��2��3��45;8:<����� ������������������56������a�����7*�� ��-*�� ��&*�� ��*�� e��*�� n��*�� f����������������D���������7�������76������K�����!*�� g��*�� h��*�� n����������������N���������!�������8��������������R*�����*������*����#���*����#*����$W*����&*���*��:��*��:�����*��:���������������&� ��X�Y�[�\�*^�1_�5`�Fb�Qd���������R�������9������>�����*+��.��������� +���h�i������������������������:;������/�����*��:������������m����������������<���=J���"����������������1�������l������PK +������N|7������������com/radinks/dnd/DNDPlus$1.class������-� +�j�� �i�� �i�� ���� +������ +�����v +���� ������ +���� +�+�� ������ +��� +���� ���� ���� ������ +������ +������� +����� +����� +���������� �������� +������ +������ +���� +������ +���� +�+�� +�+�� +�+�� +�+���� +������ +�������� +����������� ������������������ +���� ������������������ +���� +���� +������ +���� +���� ���� +������ +�P�� +���� +���� +���� +���� ���� +���� +���� +���� ������ +�������� +���� +�������� +���� +���� +�+�� +���� +� +� +��� val$fList�Ljava/util/List;� Synthetic�this$0�Lcom/radinks/dnd/DNDPlus;�<init>�,(Lcom/radinks/dnd/DNDPlus;Ljava/util/List;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�Lcom/radinks/dnd/DNDPlus$1;�run�()V�types�Ljava/lang/String;�ex�Ljava/lang/Exception;�mes�R�I�G�B�jp�Ljavax/swing/JPanel;�bgColor�poster�Lcom/radinks/dnd/PosterBase;�fileList�monitor�)Lcom/radinks/net/AbstractProgressMonitor;�iter�Ljava/util/Iterator;� +SourceFile�DNDPlus.java�p�z�n�o�k�l�� +�allow_types +�,�java/awt/Cursor�p !"� +show_thumb#$�"com/radinks/net/ImgProgressMonitor� +small_monitor�com/radinks/net/SmallMonitor�#com/radinks/net/ProgressMonitorImpl�monitor_keep_visible%&'�bachelor()* �angry_bachelor�Please select just one file.+,�scale_images- +�com.radinks.dnd.util.ScaleUtil./012�com/radinks/dnd/util/CommonUtil3456789:;<�java/lang/Exception=>�z�gzip? +�com.radinks.dnd.util.GZipUtil�max_file@ABCDEFGHI2�java/io/FileJKL�max_upload_message�size_exceed� +size_exceeded�Maximum upload size exceeded�reject_message�ESome of the files that you are attempting to upload are unacceptable.� +embed_monitorMNOPQRS�z�bgcolorTUVWXYZ[\]�java/awt/Color�p^_`ab'cdefghijklmno�invalid protocolpq,rstuvtwxyzK{|}~,��H� +textFields�����com/radinks/dnd/DNDPlus$1�java/lang/Thread�com/radinks/dnd/DNDPlus� +filesToUpload� +access$000�(Lcom/radinks/dnd/DNDPlus;)Z�com/radinks/dnd/DND�getProperty�&(Ljava/lang/String;)Ljava/lang/String;�java/lang/String�equals�(Ljava/lang/Object;)Z�utils�!Lcom/radinks/dnd/util/CommonUtil;�split�'(Ljava/lang/String;)[Ljava/lang/String;� +setAllowTypes�([Ljava/lang/String;)V�scroll�Ljavax/swing/JScrollPane;�(I)V�java/awt/Component� setCursor�(Ljava/awt/Cursor;)V�size�J�reject�Z�props�Ljava/util/Properties;�isPropertyEnabled�(Ljava/lang/String;)Z�'com/radinks/net/AbstractProgressMonitor�keepVisible�(Z)V�java/util/List�()I� +inProgress�show_error_dialog�(Ljava/lang/String;)V� +access$100�java/lang/Class�forName�%(Ljava/lang/String;)Ljava/lang/Class;�newInstance�()Ljava/lang/Object;� +access$200�0(Lcom/radinks/dnd/DNDPlus;)Ljava/util/Hashtable;� +setTextFields�(Ljava/util/Hashtable;)V�setGuiComponent�(Ljavax/swing/JComponent;)V�setProps�(Ljava/util/Properties;)V� transform�"(Ljava/util/List;)Ljava/util/List;�java/lang/Throwable�printStackTrace� +access$300�java/lang/Long� parseLong�(Ljava/lang/String;)J�singleFileLimit�iterator�()Ljava/util/Iterator;�java/util/Iterator�hasNext�()Z�next�calcSize�(Ljava/io/File;)V�uploadLimit�getMainPanel�()Ljavax/swing/JPanel;�javax/swing/JScrollPane�getViewport�()Ljavax/swing/JViewport;�java/awt/Container� removeAll� substring�(II)Ljava/lang/String;�java/lang/Integer�parseInt�(Ljava/lang/String;I)I�applet� Lcom/thinfile/upload/ThinApplet;�javax/swing/JApplet�getContentPane�()Ljava/awt/Container;�(III)V� +setBackground�(Ljava/awt/Color;)V�javax/swing/JComponent� setOpaque�add�*(Ljava/awt/Component;)Ljava/awt/Component;�textArea�Ljavax/swing/JEditorPane;� +getDropTarget�()Ljava/awt/dnd/DropTarget;� +setDropTarget�(Ljava/awt/dnd/DropTarget;)V�createPoster�()Lcom/radinks/dnd/PosterBase;�java/lang/System�out�Ljava/io/PrintStream;�java/io/PrintStream�println�"com/radinks/net/NetProgressMonitor�setBytesToRead�(J)V�setMonitorType�setFilesToUpload�get�(I)Ljava/lang/Object;�com/radinks/dnd/PosterBase� +setParentPath� +setMonitor�,(Lcom/radinks/net/AbstractProgressMonitor;)V� getTmpdir�()Ljava/lang/String;� setTmpdir�java/util/Hashtable�isEmpty�put�8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;�doStuff�(Ljava/util/List;)V� �i�j�����k�l��m������n�o��m��������p�q��r���9�����*��*+��*,�������s���������t��������u�x����y�z��r��a�� ��%*����*������**����L+��+�� ��*���� ++���� +*��L*������Y����M*�� ��*����*������N*��������Y��M��"*��������Y��M����Y��M*������,��*�� ����<+��!��� +*����"��(*��#��N-��$N*��-��%*�������*��&����{*����'��q*��(��)��*��+�� +*���� +*����,��-*���� +*������.*���� +*������/*���� ++��0L*��+��������}:��2��s*��3����g*����4��]*��5��)��*��+�� +*���� +*������/*���� +*������.*���� ++��0L*��+�������� +:��2*��*��6����*��6����7�8i�� ��:+��;�N-��<���*��-��=���>��?���*����@ ���V*����*����@���D*��A��:��*��B��:��*��C��:*����D����%��*������$*��E��:*����F����%�e*��G�����,��H:*������I��J*��K��:��l�� ��b��L��M6��L��M6��L��M6*����N��O��PY��Q��R*������I��PY��Q��S��T*������I��UW*������*����*����V��W��X*����Y:����Z[��\�*����",*������]�,��^,*�������_*����`���>��a,��b*���� +��*���� +��c��d*����,��e��*����f*����,��gW+��h��qt�1����1��s��r�\��������������)���9���>���P���R���Z���b���l���n���z��������������������������������������������������������"��3��D��U��a��q��t��v��{��~���������������������������% +8Vafqv����)�+�/�2�7�:�;�<�> ?@&A@BZD`EpF{G�J�K�M�N�U�V�W�X�Y�Z�]�_�b +df$h�t��������{�|�v��}�~����}�~��n���|�a�3��|�����|� �Q������C�����&�4�������������������|�����������%�u�x���>����l��R������ ��������������w��� +��i������PK +������N|7�U�P���������com/radinks/dnd/DNDPlus$2.class������-�O +��$ � +�% �&�' +�(�)�*�+�, �-�. +�/�0 �&�1 +�2�3�4 +�5�6�7�8�9�this$0�Lcom/radinks/dnd/DNDPlus;� Synthetic�<init>�(Lcom/radinks/dnd/DNDPlus;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�Lcom/radinks/dnd/DNDPlus$2;�run�()V�doc�Ljavax/swing/text/Document;�ex�Ljava/io/IOException;� +SourceFile�DNDPlus.java�����:�;�<�=�>�?�stream�@�A�B�C�D�E�F�G�H�I�J�K�L��java/io/IOException�M�N��com/radinks/dnd/DNDPlus$2�java/lang/Object�java/lang/Runnable�com/radinks/dnd/DND�textArea�Ljavax/swing/JEditorPane;�javax/swing/text/JTextComponent�getDocument�()Ljavax/swing/text/Document;�javax/swing/text/Document�putProperty�'(Ljava/lang/Object;Ljava/lang/Object;)V�com/radinks/dnd/DNDPlus� ext_redir�Ljava/lang/String;�javax/swing/JEditorPane�setPage�(Ljava/lang/String;)V�scroll�Ljavax/swing/JScrollPane;�java/awt/Component�repaint�java/lang/Throwable�printStackTrace� � +�����������������������4����� +*��*+���������������������� +������������������8*������L+���*����*������*���� �� +��L+�������/�2������"���������%��/��2��3��7����� ���$����3�� �!����8������"����#���� +�� +������PK +������N|7L��H��H�����com/radinks/dnd/DNDPlus.class������-- +�K�� �K�� +�K�� +�K�� +�L�� �K���� +��� �K�� �K���� +��� +���� +������ +������ +���� +�K�� �L�� +���� +��� �L�� +����� +�L�� �L�� ������ +������ +��� +���� +��� �L���� +���� +���� �L���� +�(�� +������ +���� ������ +�.���� +�.�� +�.�� +���� +������ +�L�� �K�� �L������ +������ +���������� +�@�� +���� �L�� +�������� +���� �L�� +��� +�L�� +�������� ext_redir�Ljava/lang/String;�reject�Z�utils�!Lcom/radinks/dnd/util/CommonUtil;� +filesToUpload�I� +textFields�Ljava/util/Hashtable;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/DNDPlus;�calcSize�(Ljava/io/File;)V�i�flist�[Ljava/io/File;�f�Ljava/io/File;�prepare_upload�(Ljava/util/List;)V�fList�Ljava/util/List;�thrd�Ljava/lang/Thread;�show_error_dialog�(Ljava/lang/String;)V�ex�Ljava/io/IOException;�mes�redirect�Ljava/lang/Exception;�delay�iDelay�redirTarget�allowScaling�()Z�allowFiltering� allowGzip�addTextField�'(Ljava/lang/String;Ljava/lang/String;)V�name�value�setProps�(Ljava/util/Properties;)V�props�Ljava/util/Properties;� +access$000�(Lcom/radinks/dnd/DNDPlus;)Z�x0� Synthetic� +access$100� +access$200�0(Lcom/radinks/dnd/DNDPlus;)Ljava/util/Hashtable;� +access$300� +SourceFile�DNDPlus.java�x�v�U�V�u�v�w�v�W�X�O�P�com/radinks/dnd/util/CommonUtil�Q�R�S�T�java/util/Hashtable�����v�����.�������..�����^�_�������������������v� +embed_monitor�������P�������.files were dropped but the upload was rejected�����l�com/radinks/dnd/DNDPlus$1���InnerClasses�W�������X��������err.noUpload�java/net/URL�W�l +�java/io/IOException�l +���java/lang/StringBuffer�*could not retrieve error page. message is ���X�external_redir�M�N�T�external_redir_fail�redirect_delay�java/lang/Exception�external_target�com/radinks/dnd/DNDPlus$2�W !"#$%&'()�X*�T+,�}�~�com/radinks/dnd/DNDPlus�com/radinks/dnd/DND�java/io/File�isDirectory�getName�()Ljava/lang/String;�java/lang/String�equals�(Ljava/lang/Object;)Z� listFiles�()[Ljava/io/File;�singleFileLimit�J�length�()J� isAllowed�(Ljava/io/File;)Z�size�rejectUnwanted�isPropertyEnabled�(Ljava/lang/String;)Z� +inProgress�java/lang/System�out�Ljava/io/PrintStream;�java/io/PrintStream�println�,(Lcom/radinks/dnd/DNDPlus;Ljava/util/List;)V�java/lang/Thread�start�isWebUrl�scroll�Ljavax/swing/JScrollPane;�#com/thinfile/upload/ResourceManager� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�javax/swing/JOptionPane�showMessageDialog�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)V�textArea�Ljavax/swing/JEditorPane;�javax/swing/JEditorPane�setPage�(Ljava/net/URL;)V�setText�err�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�toString�java/awt/Component�repaint� setCursor�(Ljava/awt/Cursor;)V�getProperty�uploadStatus�java/lang/Integer�parseInt�(Ljava/lang/String;)I�sleep�(J)V�(Lcom/radinks/dnd/DNDPlus;)V�javax/swing/SwingUtilities�invokeLater�(Ljava/lang/Runnable;)V�applet� Lcom/thinfile/upload/ThinApplet;�java/applet/Applet�getAppletContext�()Ljava/applet/AppletContext;�java/applet/AppletContext�showDocument�#(Ljava/net/URL;Ljava/lang/String;)V�java/lang/Throwable�printStackTrace�sig�put�8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;�!�K�L������M�N����O�P�����Q�R����S�T����U�V�����W�X��Y���c�����%*��*��*��Y���� *�� +*��Y���������Z�������E��/� �4��9��B�$�H�[�������%�\�]����^�_��Y��#������*�����+�� +��9+������+�������+��M>,���*,2�������P*�� ���+��*����� *���*�� W+����*Y��+��a��*Y�� +`�� +��**�� ����������Z���N����W��Y��[��]�'�_�(�a�-�b�5�d�<�b�B�f�E�i�Z�n�_�o�`�q�l�s�y�t���x���y���|�[���*��/��`�T��-��a�b������\�]�������c�d���e�f��Y���z�����(*����*�����������Y*+�� M,��!�����Z������������������#j�'k�[��� ����(�\�]�����(�g�h��#��i�j���k�l��Y���������\+��"��*��#+$��%��&��>*��'��(Y+��)��*��%M*��'+��,��-��.Y��/0��1+��1��2��*��'��3*��#��4����'�*�+��Z���*� +��{�}���'��*��+��3��L��S��[��[��� ��+�!�m�n����\�\�]�����\�o�N���p�X��Y��I������**5��6��7*��8�� +**9��6��7*��7��p*��7��"��f*:��6L�=+��+��;=��N�=���=*>��6N-��-?������@Y*��A��B��*��C��D��(Y*��7��)-��E���L+��F���<�A�D�<�-�����<��Z���R����� +������-��4��8��<��A��D��E��I��N��U��b��p��������������[���>��E��m�q��4�T�r�N��8�P�s�T��U�3�t�N�����m�q������\�]����u�v��Y���Z�����0*��Gn��$*��Gf��*��G��*��G��*��Gj���������Z��������[�������0�\�]����w�v��Y���c�����9*��Gn��-*��Gf��$*��G��*��G��*��Gj��*��Gh���������Z��������[�������9�\�]����x�v��Y���H�����*��Gn��*��G��*��G���������Z��������[��������\�]����y�z��Y���M�����*��+,��HW�����Z��� +����� +��[��� �����\�]������{�N�����|�N���}�~��Y���J�����*+��I*�� +��J�����Z���������� +��[��������\�]����������������Y���/�����*�������Z�������$�[����������]���������������Y���/�����*�������Z�������$�[����������]���������������Y���/�����*�������Z�������$�[����������]���������������Y���/�����*�������Z�������$�[����������]������������������������������@������PK +������N|7O��OU��U��2���com/radinks/dnd/FTPConnection$DataConnection.class������-�9 +� +�# � �$ �%�& � �' +�(�) +�*�+ � �, +�*�-�.�/�sock_active�Ljava/net/ServerSocket;� sock_pasv�Ljava/net/Socket;�this$0�Lcom/radinks/dnd/FTPConnection;� Synthetic�<init>�"(Lcom/radinks/dnd/FTPConnection;)V�Code�LineNumberTable�LocalVariableTable�this�DataConnection�InnerClasses�.Lcom/radinks/dnd/FTPConnection$DataConnection;�getInputStream�()Ljava/io/InputStream;� +Exceptions�0�getOutputStream�()Ljava/io/OutputStream;� +SourceFile�FTPConnection.java��1���2�3�4���5�6�7�8��� +��� �,com/radinks/dnd/FTPConnection$DataConnection�java/lang/Object�java/io/IOException�()V�com/radinks/dnd/FTPConnection�connectMode�I�java/net/ServerSocket�accept�()Ljava/net/Socket;�java/net/Socket�!� � +������������ +���������������������4����� +*��*+�������������w�������� +������������P�����*������*�������*����������������������������������������� �����P�����*������*�������*����������������������������������������!����"���� +�� �%��PK +������N|7�G�(A%��A%��#���com/radinks/dnd/FTPConnection.class������-� +�� �� ����� �� �� �� �� + +�< +�� +�< +�< +� +� +� ! +�" +��#$ +��%&' +��( +��)* +� ��+ +,- +. +�"/01 +��2 +�3 +�4 +�5 ��6 +�7 ��89 +�.: ��;< ��=>? +�<@A +BCD +EF ��GHI +�<J +KLM +KNOP +�BQ +�R +�BS +TUV +��WX��Y +�<Z +�<[ +�<\ +�<]^ +_` +�/ab +��cdefghij +��klm +nop +�aq +��r �as +��t �au +��vw +�hxyz{|} +�a5 +�o~ +�n +�n� +B��� +�n����� +�<� +���� +�;����DataConnection�InnerClasses�ACTIVE_MODE�I� +ConstantValue���� PASV_MODE�����anon�Z�connectMode�timeout�CRLF�[B�location�Ljava/net/URL;�out�Ljava/io/OutputStream;�writer�Ljava/io/Writer;�in�Ljava/io/InputStream;�sock_control�Ljava/net/Socket;� sock_data�welcome�Ljava/lang/String;�lastMessage� logWriter�Ljava/io/PrintStream;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/FTPConnection;�setLocation�(Ljava/net/URL;)V�cdhome�()Z�path� +Exceptions�chmod�(ILjava/lang/String;)Z�perms�cwd�(Ljava/lang/String;)Z�dir�login�'(Ljava/lang/String;Ljava/lang/String;)Z�username�password�openConnection�port�addr�Ljava/net/InetSocketAddress;�� +initStream�getLine�()Ljava/lang/String;�ex�Ljava/io/IOException;�iBufLen�i�buf�send_command�'(Ljava/lang/String;Ljava/lang/String;)V�command�params�writeln�(Ljava/lang/String;)V�s�()Ljava/net/ServerSocket;�socket�Ljava/net/ServerSocket;� localhost�Ljava/net/InetAddress;�s_port�ip�cmd�pasv�()Ljava/net/Socket;�start�end�sockaddr�parts�[Ljava/lang/String;�s_hostIP�getIn�()Ljava/io/InputStream;�getOut�()Ljava/io/OutputStream;�isOk�check_reply�code2�code�mkdir�user�user_cmd�pass�log�mes�getLastMessage� +switchMode�()I�makeDataConnection�0()Lcom/radinks/dnd/FTPConnection$DataConnection;�con�.Lcom/radinks/dnd/FTPConnection$DataConnection;�makeUnsignedShort�(B)S�b�B�setLogWriter�(Ljava/io/PrintStream;)V�list�$(Ljava/lang/String;)Ljava/util/List;�f�Lcom/radinks/net/IRemoteFile;�bin�Ljava/io/BufferedReader;� data_sock�Ljava/util/List;�type�mode�isAnon� getWriter�()Ljava/io/Writer;�getConnectMode�setConnectMode�(I)V�getSize�(Ljava/lang/String;)J�nex�!Ljava/lang/NumberFormatException;�fname�<clinit>� +SourceFile�FTPConnection.java�����������������������������������������/������java/lang/StringBuffer�SITE CHMOD ����� ��������200�����CWD �250���������java/net/Socket��������java/net/InetSocketAddress�������connect to �:����������������������java/io/OutputStreamWriter��������220-�����220� Microsoft���MS�����*nix���������java/io/IOException�java/lang/String�������� +����> �java/net/ServerSocket�����������PORT �����,�227����������.����500�55�����-�MKD �257�user �331�PASS�anonymous@localhost�����230-�230�����,com/radinks/dnd/FTPConnection$DataConnection����������������������java/util/ArrayList�LIST�LIST �150�125�java/io/BufferedReader�java/io/InputStreamReader������������������226�TYPE �SIZE �213������java/lang/NumberFormatException�Could not determine file size�����com/radinks/dnd/FTPConnection�java/lang/Object�java/net/UnknownHostException�java/net/URL�getPath�equals�(Ljava/lang/Object;)Z� +startsWith� substring�(I)Ljava/lang/String;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�(I)Ljava/lang/StringBuffer;�toString�getPort�getHost�(Ljava/lang/String;I)V�connect�(Ljava/net/SocketAddress;)V�setSoTimeout�getInputStream�getOutputStream�(Ljava/io/OutputStream;)V�indexOf�(Ljava/lang/String;)I�com/radinks/net/RemoteFile� +setServerType�java/io/InputStream�read�([BII)V�java/io/Writer�write�flush�getLocalAddress�()Ljava/net/InetAddress;�getLocalPort�java/net/InetAddress� +getAddress�()[B�(I)I�length�(II)Ljava/lang/String;�split�'(Ljava/lang/String;)[Ljava/lang/String;�java/lang/Integer�parseInt�java/io/PrintStream�println�"(Lcom/radinks/dnd/FTPConnection;)V�sock_active� sock_pasv�(Ljava/io/InputStream;)V�(Ljava/io/Reader;)V�readLine�parse�1(Ljava/lang/String;)Lcom/radinks/net/IRemoteFile;�java/util/List�add�close�trim�java/lang/Long� parseLong�!�������������������������������������������������������������������������������������������������������������������������������"�����������b����� *��*��*��*��*��*���������������O��!� �&��+��E��K��O��������� �����������������>�����*+�� ��������� +����V��W����������������������������������������4*�� �� +L+��)+���� *+����+ +���� +*+�������������������c��d��f��h�&�j�0�n�2�r���������4��������,������������;�����������i�����'*��Y��������,������*����������� +������ ������� ����'���������'��������'������������;�����������V�����*��Y����+������*����������� +��������������������������������������;�����������T�����*+����*,������������������������� ���������������������������������;������������������*��Y���� *�� ��!���� +*�� ��!<��"Y*�� ��#��$M*��Y��%��*�� ��#��&��������'*�� ,��(*�� *����)**�� ��*��+**�� ��,��-*��.Y*��-��/��0���������*� +��������"���2���X���`���k���v��������������� ������������"�o������2�_������������;�������������������L*1�������*��2��,*��23���� *��24��5��6��7��8��7��*��2����������������&� ����� ���������,���4���<���H���K�����������L�������������;�����������������C�<=�N=��"-*��+��9�T-3��:3���� ���ߧ�:���<Y-��=��� +�0�3�;������2������������ +���������'���*���0���3���5���8�������4��5���������C��������?�������=������ +�9������������;�����������^�����*��Y��+����,��������������� +������������ ���������������������������������;�����������t�����0*��0+��>*��0?��>*��0��@*��Y��A��+������'������������ +��� +�/���������0���������0������������;����������E��������BY��CL*�� ��DM+��E>,��F:�:z�T��~�T��Y��G��*3��H��I��*3��H��I��*3��H��I��*3��H��I��*3��H��I��*3��H����:*��*����+����������2���� ��� �!"�*#�4%��*��+��-��1�����H������������ ��������������������������������!����������������������;����������1������*J��*K�����*��2(��L<*��2)��L=��*��2��Md��=*��2`��NN-I��O:��Y��2��P��2��P��2��P��2����:2��Qx2��Q`6��Y��R����������.���<�>�@�A�#B�6C�BD�JF��H��L��P�����H����������#�~������B�_������J�W�������� ������������������������������;�����������/�����*��+������������Z��������������������������/�����*��-������������c��������������������������E�����*S����*��2T������������������o����������������������;����������6������+��M��;**��U��2*��Y��A��*��2������'*��2��*��2+������*��2��Y��+��V����M*��UN*��Y��A��-������'-��'��Y��*Z��2��-������2-,�������-��-+��������������F���}�����*��<��>��@��F��Z��_��v��z���������������������*��Z�T������_�O�������������������������������;�����������V�����*��Y��W��+������*X����������� +������������������������������������;�����������f����� ��Y��Y��+����M*,��*Z������������������������ ���� ��������� �������������������;�����������������R*[+��\��+��]*^����2��Y��*Z����*��2������*^�����*��2_���*��2_��������������������5��>��H����������R���������R������������;�����������L�����*����*��+��`���������������������������������������������������/�����*��2���������������������������������������D�����**��������*����������� +������������������������������j�����&��aY*��bL*����+*��c��d��+*��e��f+������������� ���$���������&������� �������������;�����������D��������`����������������)����������������������������������>�����*+����������� +���2�3���������������������������������N������*��gM��hY��iN,���+��+����*j����*��Y��k��+������*l����*��2m����R��nY��oY,��p��q��r:��s:������t:��-��u�W�����v*w����-������������J���?�@� +B�D�F�'J�>L�SR�gV�nW�sY�v[�}\��]��^��_��a��e�����H��n�������}�������g�;��������������������������������� +��������������;�����������s�����!*��Y��x��+������*���M������;��������������������� �����������!���������!������������;����������/�����*�������������������������������������/�����*��0�������������������������������������/�����*�������������������������������������>�����*����������� +������������������������������������������<*��Y��y��+������*z����*��2����{��|� �M��;Y~������.�1�}�/�0�1�}������������� ��/��1��2������ ��2� + ����<���������< +����������;���������)�������Y +TY +T��:�������������,���� +����� +��a�����PK +������N|7�8; #�� #�����com/radinks/dnd/FTPPoster.class������- +������ +��� ���� ������ +��� ���� ���� ���� ������ +��� +���� �������� +��� ������ +���� +���� ��� +�� + +�� �� + +�� + +�� +�!�� +�! �� +�! +�1 !" +�1# +$% +�!&'( +�)* +��+ +,- +��. +/- ��0 +��12 +34 +35 +��67 +�H8 ��9 +:;< +�L= +��> +�L? +��@ +�LAB +�HC +:DEF +�HG +��H +��I +��JK +��L +:MN +OP +��Q +��RS +�c��T +�eU +VW +VXY +�i�� +Z[\ +�l��] +�n^ �l_ �l` �la �lbcd +�t�� +Zefgh +i +jk +lm +�kn +��o +��pq +����r +���� +��s ��t +��u +��v +��w +��x +��p +lyz{ +��| +j}~ +l� +l�� +�� +����� +������location�Lcom/radinks/dnd/FTPConnection;�txt_user�Ljavax/swing/JTextField;�txt_host�txt_pass�Ljavax/swing/JPasswordField;� +userNamePanel�Ljavax/swing/JPanel;�userInfoRetrieved�Z� resumable�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/FTPPoster;�doStuff�(Ljava/util/List;)V�item�Lcom/radinks/net/RemoteFile;�buf�Ljava/lang/StringBuffer;�iter�Ljava/util/Iterator;�rowCount�I�row�Ljava/lang/String;�out�Ljava/io/OutputStream;�response�Ljava/util/List;�ex�Ljava/lang/Exception;�files�e�$Lcom/radinks/dnd/events/UploadEvent;� sendFiles�,([Ljava/lang/Object;Ljava/io/OutputStream;)V�data_out�remoteLength�J� sock_data��DataConnection�InnerClasses�.Lcom/radinks/dnd/FTPConnection$DataConnection;�f�Ljava/io/File;�sex�Ljava/net/SocketException;�Ljava/io/IOException;�i�[Ljava/lang/Object;�writer�Ljava/io/PrintWriter;�create_UserNamePanel�gc�Ljava/awt/GridBagConstraints;�getUserInfo�()Ljava/lang/String;� +Exceptions�login�()Z�parts�[Ljava/lang/String;�success�u�Ljava/net/URL;�userInfo�setProps�(Ljava/util/Properties;)V�props�Ljava/util/Properties;� +SourceFile�FTPPoster.java�����javax/swing/JTextField���������javax/swing/JPasswordField�����������������"com/radinks/dnd/events/UploadEvent�����������java/io/IOException�Login Failed����������������������������������������java/lang/StringBuffer�.<html><head><title>File Upload Handler</title>������-<link rel='stylesheet' type='text/css' href='�'>���� +</head><body>�<table border=1 width='99%'>�:<tr><td colspan='2' class='th'>Directory listing</td></tr>�/<tr><td class='th2'><nobr>File Name</nobr></td>�0<td class='th2'><nobr>File size</nobr></td></tr>���������com/radinks/net/RemoteFile�<tr class='t1'><td>�<tr class='t2'><td>����</td>�<td>�������� +</td></tr>�</table></html>���quit���������������java/lang/Exception�����������java/io/PrintWriter����������java/io/File�������������APPE �����STOR � +�����������226����� +Upload Failed���java/net/SocketException�����javax/swing/JPanel�java/awt/Dimension���������java/awt/GridBagLayout����java/awt/GridBagConstraints�java/awt/Insets���������������javax/swing/JLabel�Destination ftp://��� Username � Password �Connect to:����������ftp://���������java/net/URL�com/radinks/dnd/FTPConnection������������������� anonymous�pass������:���%40��UTF-8�����yes�com/radinks/dnd/FTPPoster�com/radinks/dnd/PosterBase�,com/radinks/dnd/FTPConnection$DataConnection�(Ljava/lang/Object;)V�postLocation�(Ljava/lang/String;)V�type�(Ljava/lang/String;)Z�cdhome�guiComponent�Ljavax/swing/JComponent;�getLastMessage�javax/swing/JOptionPane�showMessageDialog�)(Ljava/awt/Component;Ljava/lang/Object;)V�getOut�()Ljava/io/OutputStream;�timer�Ljavax/swing/Timer;�javax/swing/Timer�start�java/util/List�toArray�()[Ljava/lang/Object;�list�$(Ljava/lang/String;)Ljava/util/List;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�style�toString�iterator�()Ljava/util/Iterator;�java/util/Iterator�hasNext�next�()Ljava/lang/Object;�getFilename�getAttrs�()Lcom/radinks/net/FileAttrs;�com/radinks/net/FileAttrs�getSize�()J�(J)Ljava/lang/StringBuffer;�setResponse�writeln�+(Ljava/io/OutputStream;Ljava/lang/String;)V�java/io/OutputStream�close�getIn�()Ljava/io/InputStream;�java/io/InputStream�done�fireUploadCompleted�'(Lcom/radinks/dnd/events/UploadEvent;)V�java/lang/Throwable�printStackTrace� +getMessage�stopMe�(Ljava/io/OutputStream;)V�mon�)Lcom/radinks/net/AbstractProgressMonitor;�'com/radinks/net/AbstractProgressMonitor�canContinue�isDirectory�makeDataConnection�0()Lcom/radinks/dnd/FTPConnection$DataConnection;�getName�(Ljava/lang/String;)J�length�write�count�(J)Z�flush�isOk�getOutputStream�sendFile�'(Ljava/io/File;Ljava/io/OutputStream;)V�check_reply�setCanContinue�(Z)V�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)V�handleSocketError�(Ljava/lang/Exception;)V�handleGenericError�(II)V�javax/swing/JComponent�setMinimumSize�(Ljava/awt/Dimension;)V�setPreferredSize�java/awt/Container� setLayout�(Ljava/awt/LayoutManager;)V�(IIII)V�insets�Ljava/awt/Insets;�anchor�gridx�gridy�add�showConfirmDialog�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)I�javax/swing/text/JTextComponent�getText�java/lang/String�equals�(Ljava/lang/Object;)Z�setLocation�(Ljava/net/URL;)V�ftpMode�setConnectMode�(I)V�openConnection� +initStream�'(Ljava/lang/String;Ljava/lang/String;)Z�()I�getHost�setText�split�'(Ljava/lang/String;)[Ljava/lang/String;�indexOf�(Ljava/lang/String;)I�java/net/URLDecoder�decode�8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;�java/util/Properties�getProperty�&(Ljava/lang/String;)Ljava/lang/String;�!�����������������������������������������������������������������������w�����5*��*��Y����*��Y����*��Y����*�� *�� +*���������������)��0��5��;�%�@�*�E�/�J���������5������������������� +�����Y*�� +M*����*���� +��Y����*����W*������*��*������*����N*����*+���-��*���� :�����!Y��":#��$W*��%��$��!Y��"&��$*��%��$'��$��(��$W)��$W*��$W+��$W,��$W-��$W��.�:6:��/���n��0���1: �p�� +2:��3:��!Y��"��$ ��4��$5��$��(��$W��!Y��"6��$ ��7��8��9:��$��(��$W���;��$W,��(��<*-=��>-��?*����@��A*��B*,��C��N-��E*��-��F��*��G��� �!��D�"���D��������.���Q� �U��W��Y�!�]�"�a�,�b�6�d�D�g�L�h�S�j�^�k�i�m�n�o�w�p��q���s���v���x���y���z���{���}���~��������������������� +��,��Q��T��\��e��l��p��z���������������������������p����\����� �w�����������������������������������L8������i������������������������������ ����������������p�� +��"��HY,��IN6+��*��J��K�+2��L:��M���*����N:���*����O��P7*����,��Q���!-��!Y��"R��$��O��$��(��S��4��Q���*��J��TW�-��!Y��"U��$��O��$��(��S-V��S-��W*����X��&��Y: * ��Z ��?*��[��\����<*��J��]*��*����^��_��&*,��Z��:*��a��:*��b���������`�����`�����`���`�������������������������!����� ������&���.���7���<���J���\���z������������������������������������������������������������������ +����������!������p��������� �J��������7��������&������� +��������������������"��������"�������"������ ��������������������I*�� �D*��cY��d�� *����eYx��f��g*����eYx��f��h*����eYx��f��g*����eYx��f��h*����eYx��f��g*����eYx��f��h*�� ��iY��j��k��lY��mL+��nY��o��p++W +��q+��r+��s*�� ��tYu��v+��w+Y��r`��r*�� *��+��w+��r+Y��s`��s*�� ��tYx��v+��w+Y��r`��r*�� *��+��w+��r+Y��s`��s*�� ��tYy��v+��w+Y��r`��r*�� *��+��w���������r��� ���$ +�6�H�Z�l�~������������������ ��!��#��$%'(!*2+<,H/�����������������I�����������������������_*��*�� z��{��O*����|��}��!*����~��}��*����|��}��"*�� +��!Y��"��$*����|��$��(�������������6�:�>=�C>�]B���������_�������������D����������?����W*����*���**���Z�����*������Y*�����L*���Y�����*��+���*��*������*�����*�����*�� +��*��*����|*����~����+���M,��,�����i*����|��}��D*����~��}��5*���������%*���*��+������**���Z�����*����*��*����|*����~����,����N*��-2-�����-2���6��5,������+,����M,����N*��-2-�����-2���6��:��Y��F�����BE�D��������"��U�Z�[�]�a�f�*g�5h�=i�Hj�Ok�Vm�]o�sq�xs��u��z��|��}��~��������������������!�(�B�E�G�T������>�G� +��������f������L������*-������x���������W�������������D�����������b�����"*+���+������+�������}��*��������������������!����������"���������"������������������ +��������PK +������N|7L-��}��}��#���com/radinks/dnd/FTPPosterPlus.class������-�� +�.�T +��U �.�V +��W +�X�Y +�X�Z +��[ +�-�\�] +�^�_�` +��a �^�b +�c�d�e +�-�_ +�X�f �.�g +�X�h +��i �^�j�k +��T�l +��m +��n +��o�p�q +��r +�X�s +�E�t +�u�v�w +�X�x +�c�y �^�z +�X�{�| +�}�~� +�^���� +�^�������<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/FTPPosterPlus;�sendFile�'(Ljava/io/File;Ljava/io/OutputStream;)V�files�[Ljava/io/File;�f�Ljava/io/File;�out�Ljava/io/OutputStream;� +Exceptions� sendFiles�,([Ljava/lang/Object;Ljava/io/OutputStream;)V�remoteLength�J�data_out� sock_data���DataConnection�InnerClasses�.Lcom/radinks/dnd/FTPConnection$DataConnection;�sex�Ljava/net/SocketException;�ex�Ljava/io/IOException;�i�I�[Ljava/lang/Object;�writer�Ljava/io/PrintWriter;� +SourceFile�FTPPosterPlus.java�/�0���������������������������?�@�..���6�7�java/io/PrintWriter�/�������������java/io/File�������������������B�java/lang/StringBuffer�APPE �������������STOR � +���0�������������0�226����������������� +Upload Failed�������java/net/SocketException�����java/io/IOException�����com/radinks/dnd/FTPPosterPlus�com/radinks/dnd/FTPPoster�,com/radinks/dnd/FTPConnection$DataConnection�isDirectory�()Z�location�Lcom/radinks/dnd/FTPConnection;�getName�()Ljava/lang/String;�com/radinks/dnd/FTPConnection�mkdir�(Ljava/lang/String;)Z�cwd� listFiles�()[Ljava/io/File;�com/radinks/dnd/PosterBase�(Ljava/io/OutputStream;)V�mon�)Lcom/radinks/net/AbstractProgressMonitor;�'com/radinks/net/AbstractProgressMonitor�canContinue�makeDataConnection�0()Lcom/radinks/dnd/FTPConnection$DataConnection;� resumable�Z�getSize�(Ljava/lang/String;)J�length�()J�bytesWritten�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�toString�write�(Ljava/lang/String;)V�flush�isOk�getOutputStream�()Ljava/io/OutputStream;�java/io/OutputStream�close�check_reply�setCanContinue�(Z)V�guiComponent�Ljavax/swing/JComponent;�getLastMessage�javax/swing/JOptionPane�showMessageDialog�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)V�handleSocketError�(Ljava/lang/Exception;)V�handleGenericError�!�-�.�������/�0��1���/�����*�������2��������3��������4�5����6�7��1���������@+����5*��+����W*��+������!+��N*-,��*�� ��W�� *+,�� +�����2���&� ���(��.��0�!�2�&�3�,�4�6�5�9�=�?�?�3���*��&��8�9����@�4�5�����@�:�;����@�<�=��>�����+��?�@��1����� ��Q��Y,��N6+��@*�� +���6+2��:���� +*,�����*����:���*����|*������7�����,*Y��a��-��Y��������������7�����*Y��a�����-��Y��������������-��Y������������-��-��*������&�� :*����!*��"��#����5*�� +��$*��%*����&'��(����:*��*��:*��,�������&��7�)��7�)17�)�&��B�+��B�+1B�+��2�����%���M� �O��R�&�V�.�^�8�b�A�d�F�i�M�k�[�l�f�q�q�r���t���v���w���{���}�������������������������� ������ ��1��4��7��9��?��B��D��J�OP���3���p��[�h�A�B�����C�=��A���D�H�9��I�J�D��K�L��&$�:�;��D�M�N���Q�4�5����Q�8�O���Q�<�=�� H�P�Q���R����S�G��� +��E�X�F�PK +������N|75V�m������$���com/radinks/dnd/HTTPConnection.class������-I +�\���� �[���� �[�� �[�� �[�� �[���� �[�� �[�� �[���� +� +�� �[���� +��� �[���� �[�� +��� +� +�� +� +�� +��� +��� +��� �[�� +��� �[�� +�S�� +���� �[���� +�!�� +�!���� +�!�� +�!�� +� +�� +� +������ +�[���� �[��������� +��� +���� +�[�������� +�5�� +�4�� �[�� +�4�� +�S������ +�S���� +�S���� +�S������ +�S�� �[�� +�S���� +���� ��� + +�S + + + +�4 +�S + �[ +�!�� +�� +�� +��transfer_encoding�Ljava/lang/String;�CRLF�[B� +contentLength�I�breader�Ljava/io/BufferedReader;�contentType�cnt�Z�bRead�location�Ljava/net/URL;�out�Ljava/io/OutputStream;�in�Ljava/io/InputStream;�sock�Ljava/net/Socket;�auth�status� proxyHost� proxyPort�method�closeConnection�header�<init>�(Ljava/lang/String;)V�Code�LineNumberTable�LocalVariableTable�this� Lcom/radinks/dnd/HTTPConnection;�postLocation� +Exceptions�(Ljava/net/URL;)V�openConnection�()V�addr�Ljava/net/InetSocketAddress;� addHeader�s� +initStream�path�endWrite� +getHeaders�()Ljava/lang/String;�parts�[Ljava/lang/String;�ex�Ljava/io/IOException;�IIS�getIn�()Ljava/io/InputStream;� +getContent�()Ljava/lang/Object;�clen�i� chunkSize�response�Ljava/lang/StringBuffer;�cbuf�[C�getOut�()Ljava/io/OutputStream;�getContentLength�()I�setAuth�getAuth�setProxyHost�getProxyHost�setProxyPort�(I)V�getProxyPort�getContentType� getMethod� setMethod�setLocation�getLocation�()Ljava/net/URL;�setCloseConnection�(Z)V�close�<clinit>� +SourceFile�HTTPConnection.java�x�����]�^� text/html�e�^�f�g�h�b�s�^�POST�u�^�v�g�w�^�java/net/URL�x�y�i�j�java/net/Socket�o�p�java/net/InetSocketAddress�t�b�x�������m�n���k�l !"�_�`�java/lang/StringBuffer#$� %��#&'��(���?� HTTP/1.1���y�Host: �q�^�Authorization: Basic �Connection: close)��*+�������java/io/BufferedReader�java/io/InputStreamReader�UTF-8�x,�x-�c�d.��/��� +�Transfer-Encoding01�:23�chunked41�Content-Type�HTTP56�r�^7���java/io/IOException89��:�k;�--- that's all folks -- +<=�y�204>?�100@ABCDEFG�java/lang/String�xH�a�b�The document contained no data�����com/radinks/dnd/HTTPConnection�java/lang/Object�java/net/MalformedURLException�java/net/UnknownHostException�(Ljava/lang/String;I)V�getHost�getPort�isConnected�()Z�connect�(Ljava/net/SocketAddress;)V�getInputStream�getOutputStream�getBytes�()[B�java/io/OutputStream�write�([B)V�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�toString�,(Ljava/lang/Object;)Ljava/lang/StringBuffer;�getPath�getQuery�setSoTimeout�java/io/InputStream� available�*(Ljava/io/InputStream;Ljava/lang/String;)V�(Ljava/io/Reader;)V�readLine�trim� +startsWith�(Ljava/lang/String;)Z�split�'(Ljava/lang/String;)[Ljava/lang/String;�endsWith�indexOf�(Ljava/lang/String;)I�length�java/lang/Throwable�printStackTrace�java/lang/System�Ljava/io/PrintStream;�java/io/PrintStream�println�equals�(Ljava/lang/Object;)Z�java/lang/Integer�parseInt�(Ljava/lang/String;I)I�java/lang/Math�min�(II)I�read�([CII)I�([CII)V�!�[�\�����]�^����_�`����a�b����c�d����e�^����f�g����h�b����i�j����k�l����m�n����o�p����q�^����r�^����s�^����t�b����u�^�����v�g����w�^�����x�y��z���������<*��*��*��*��*��*��* �� +*��*��*�� +Y+���������{���.����h��!� +�/��1��3��H��R�%�W�*�[�/�i�;�j�|�������<�}�~�����<��^�����������x����z���������5*��*��*��*��*��*��* �� +*��*��*+�������{���.����m��!� +�/��1��3��H��R�%�W�*�[�/�n�4�o�|�������5�}�~�����5�i�j��������z���������s*��Y����*������Y*��*����L��(��Y*����*������P�� +*������L*������!*��+��**������**�����������{���&� ���z��}����%���J���T���\���g���r���|��� ��"���������s�}�~���J�)������������H������y��z���R�����*��+����*���� �������{���������������|��������}�~��������^��������H�������z��N�������!Y��"*�� +��#$��#��%L*������!Y��"+��#*����&��%L��D��!Y��"+��#*����'��#��%L*����(��!��!Y��"+��#)��#*����(��#��%L��!Y��"+��#*��#��%L*+��+*��!Y��",��#*������#��%��+*��-��*��!Y��".��#*��-��#��%��+*���� */��+*�������{���>������������7���P���Z���x�����������������������������������|���������}�~��������^��������H�������z���]�����#*���� ��*��0��1*����2��*��3W�����{��������� +���������"���|�������#�}�~���������H�������z���������*�����*��<*��4Y��5Y*��6��7��8��9*��9��:M,��*�������*�����,��;M��!Y��"*Z����#,��#<��#��%��,=��>��%,?��@N*-2��;��*��A��B�����,C��>��,?��@N*-2��;��,D��E��*,$��@2��F,��G������Z�� +M,��I���J��!Y��"K��#*����#��%��L*����������H�������H��{����� �������� +������'���/���3���:���=���B���E���J��h�q�x������ +���� +��������������$�� ��"��#��&��'�|���>��x��������� +������/�����^���������������g������}�~���������z���/�����*�������{������,�|��������}�~���������z��*������!Y��"L*��F�� *��F*��FM��N���*����*��FO��N�� +*��*��3W��M*��9��:N-���*Y��-��G`��*��A��N��q-��N��h6-��;��P6����{��H*��9,�d��Q��R6����)��SY,��TN-����-���`6+-��#W�����!+-��#W*��*��U��*���� ������ON-��I��+��V��+��%�W���G�����H�������H��{�����'��9�;�=�@�!E�$H�7M�<N�AP�GU�OW�SZ�`[�u`�xa��b��d��f��h��i��k��n��p��r��v��w��y��z������������������������ +���|���R����,���b��x�_���b����T���b��O�����^������������}�~��� +������G��������������z���/�����*�������{��������|��������}�~���������z���/�����*��U�����{��������|��������}�~������y��z���>�����*+��-�����{��� +�������|��������}�~������q�^��������z���/�����*��-�����{��������|��������}�~������y��z���>�����*+�������{��� +�������|��������}�~������s�^��������z���/�����*�������{��������|��������}�~���������z���>�����*�������{��� +�������|��������}�~������t�b��������z���/�����*�������{��������|��������}�~���������z���/�����*�������{��������|��������}�~���������z���/�����*�� +�����{��������|��������}�~������y��z���>�����*+�� +�����{��� +�������|��������}�~������u�^��������z���>�����*+�������{��� +�������|��������}�~������i�j��������z���/�����*�������{��������|��������}�~���������z���>�����*�������{��� +�������|��������}�~������v�g��������z���s�����*��*����X*����Y*����Z��L�������H��{��������������������|����������������}�~���������z���)�������Y +TY +T�� �����{�������"��������PK +������N|7�zݰ� +��� +��"���com/radinks/dnd/ImagePreview.class������-�� +�,�^ �+�_ �+�`�a +��b �+�c �+�d +�,�e�f +�g�h�i +�j�k +� �l �+�m +�n�o�p +�q�r�s +�n�t�u +�v�w +�+�x +�v�y +��z +� �{ +� �| +� �} ��~ +� � +���� +� �� +�,�� +�,�� +� ���� +�#�� +�#���� +�&�� +�#�� +�&�� +�&����������� noPreview�Ljavax/swing/ImageIcon;� thumbnail�file�Ljava/io/File;�dim�Ljava/awt/Dimension;�accesoryFor�Ljava/lang/Object;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/ImagePreview;�propertyChange�#(Ljava/beans/PropertyChangeEvent;)V�e� Ljava/beans/PropertyChangeEvent;�prop�Ljava/lang/String;� showThumb�(Ljava/io/File;)V�tmpIcon�paintComponent�(Ljava/awt/Graphics;)V�x�I�y�g�Ljava/awt/Graphics;�valueChanged�)(Ljavax/swing/event/ListSelectionEvent;)V�cols�[I�model�!Lcom/radinks/sftp/FileTableModel;�table�Ljavax/swing/JTable;�rows�&Ljavax/swing/event/ListSelectionEvent;�setAccesoryFor�(Ljava/lang/Object;)V�o� +SourceFile�ImagePreview.java�8�9�1�0�2�3�java/awt/Dimension�8���4�5�6�7�����javax/swing/ImageIcon�������/images/nopreview.gif�������8���/�0�������directoryChanged�������SelectedFileChangedProperty�����java/io/File�������E�F���9�����8�������������K�����������8���������������javax/swing/JTable���������com/radinks/sftp/FileTableModel�����������������com/radinks/dnd/ImagePreview�javax/swing/JComponent�!java/beans/PropertyChangeListener�'javax/swing/event/ListSelectionListener�(II)V�setPreferredSize�(Ljava/awt/Dimension;)V�java/lang/Object�getClass�()Ljava/lang/Class;�java/lang/Class�getResource�"(Ljava/lang/String;)Ljava/net/URL;�(Ljava/net/URL;)V�java/beans/PropertyChangeEvent�getPropertyName�()Ljava/lang/String;�java/lang/String�equals�(Ljava/lang/Object;)Z�getNewValue�()Ljava/lang/Object;�java/awt/Component� isShowing�()Z�repaint�getPath�(Ljava/lang/String;)V� +getIconHeight�()I�getIconWidth�width�getImage�()Ljava/awt/Image;�java/awt/Image�getScaledInstance�(III)Ljava/awt/Image;�(Ljava/awt/Image;)V�getWidth� getHeight� paintIcon�,(Ljava/awt/Component;Ljava/awt/Graphics;II)V�getSelectedRows�()[I�getModel� ()Ljavax/swing/table/TableModel;�getViewType�getSelectedColumns�getColumnCount�getElementAt�(I)Ljava/lang/Object;�!�+�,��-�.����/�0�����1�0�����2�3�����4�5�����6�7�����8�9��:���������G*��*��*��*��Yxx����*��**����*�� Y*�� +���� +��**���������;���&� ������ ������"��*� �>�!�F�"�<�������G�=�>����?�@��:���������F+��M,����*����,����*+������**����*����**����*�������;���*� +���,��.��0��2��4�*�7�2�8�9�:�A�<�E�=�<��� ����F�=�>�����F�A�B���A�C�D���E�F��:���������S+��Q�� Y+����M,��A,����:,��*���� +d��$*�� Y,��*���� +d��������*,�������;�������B��D��E��G�,�I�M�O�R�S�<��� ���B�G�0����S�=�>�����S�2�3���H�I��:���������B*����=*�� l*����ld=*��!l*����ld>��>��=*��*+��"�����;���&� ���W��Y��Z�)�\�-�^�/�a�4�c�6�e�A�g�<���*���)�J�K��)��L�K����B�=�>�����B�M�N���O�P��:��*������*����#���*����#M,��$N-��-��� +*����**������a,��%��&:��'W��=,��(:�� +���**������*-.��)h.`��*������*-.��*����*�������;���>����p� +�r��s��t�(�v�3�z�<�{�H�}�N�~�Z���e������������������<���>��N�1�Q�R��<�U�S�T�����U�V���~�W�R������=�>�������A�X���Y�Z��:���>�����*+�������;��� +���������<��������=�>������[�7���\����]PK +������N|75�I����������com/radinks/dnd/Poster.class������-� +�w�� �v���� +��� �v�� �v���� +��� �v���� +� +���� +��� +���� +�w�� �w���� +���� ���� +������ +��� +��������� +����� �w�� +�\�� +���� �w������ �w�� +����������� +��� +��� +� +������ +� +�� +��� +�v���������������� +�3�� �w�� +���� �w�� +�������� +�v�� �w���� +�\���� +�>���� +�@�� �v�� +�w�� �w�� +�@�� +�@�� +�@���� +�@�� +�v�� �w� +�������� + �w +�@ +�@ +�w +�v + +�� +�� +�@ +�@ �w +�@ +�3 +�w +�w +�w �w �w + + +�w +�� +�w �w ! +�w" �w#�� +�o$% +�o& +�o'() +�\*+(,-.�location� Lcom/radinks/dnd/HTTPConnection;� +lastFileIndex�I�headers�Ljava/util/List;�headerOffset�formData�Ljava/lang/StringBuffer;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/Poster;�makeHeaders�([Ljava/lang/Object;)V�path�Ljava/lang/String;�name�contentType�file�Ljava/io/File;�i�disposition�Ljava/io/ByteArrayOutputStream;�ex�Ljava/io/IOException;�files�[Ljava/lang/Object;� +getHeaderSize�()I�header�[B�size�doStuff�(Ljava/util/List;)V�in�Ljava/io/InputStream;�len�J�out�Ljava/io/OutputStream;�e�$Lcom/radinks/dnd/events/UploadEvent;� sendFiles�,([Ljava/lang/Object;Ljava/io/OutputStream;)V�f�sex�Ljava/net/SocketException;�processFormData�iter�Ljava/util/Enumeration;� +textFields�Ljava/util/Hashtable;� +SourceFile�Poster.java�����z�{�java/util/ArrayList�|�}�~�{�java/lang/StringBuffer����java/io/ByteArrayOutputStream�java/io/File/01234567�UTF-889:;��<=>?�name="userfile[@A@B�]"; � +filename="�"CD�--E��FGHIJK��� Content-Disposition: form-data; �Content-Type: LMNDOPQ�application/octet-stream�Content-Length: RS@TUGVWXY��Z[�����java/io/IOException����\]�"com/radinks/dnd/events/UploadEvent��^_`abScdef��gh����i���httpsjk�%com/radinks/dnd/https/HTTPSConnection��?�com/radinks/dnd/HTTPConnection�x�ylmn��o?p��q���,Content-Type: multipart/form-data; boundary=r?����s��R��tuvwCxy��z��{|}~����0������D�7���java/lang/String�?�����������err.generic2��Q�������0������java/net/SocketException����\��java/util/Hashtable�0�������J�&Content-Disposition: form-data; name="�0�com/radinks/dnd/Poster�com/radinks/dnd/PosterBase�isDirectory�()Z�com/radinks/dnd/util/CommonUtil� isAllowed�(Ljava/io/File;)Z�makeFileName�"(Ljava/io/File;)Ljava/lang/String;� +encodePath�Z�java/net/URLEncoder�encode�8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;�java/lang/System�Ljava/io/PrintStream;�java/io/PrintStream�println�(Ljava/lang/String;)V�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�(I)Ljava/lang/StringBuffer;�toString�()Ljava/lang/String;�boundary�getBytes�()[B�java/io/OutputStream�write�([B)V�CRLF�nameMap�Ljava/net/FileNameMap;�getName�java/net/FileNameMap�getContentTypeFor�&(Ljava/lang/String;)Ljava/lang/String;�length�()J�(J)Ljava/lang/StringBuffer;�toByteArray�java/util/List�add�(Ljava/lang/Object;)Z�reset� listFiles�()[Ljava/io/File;�get�(I)Ljava/lang/Object;�(Ljava/lang/Object;)V�mon�)Lcom/radinks/net/AbstractProgressMonitor;�'com/radinks/net/AbstractProgressMonitor�getBytesToRead�timer�Ljavax/swing/Timer;�javax/swing/Timer�start�toArray�()[Ljava/lang/Object;�postLocation� +startsWith�(Ljava/lang/String;)Z�proxyDetect�#(Lcom/radinks/dnd/HTTPConnection;)V�auth�setAuth�openConnection� +initStream� addHeader�topDog�"com/radinks/net/NetProgressMonitor�setBytesToRead�(J)V�java/lang/Long�(J)Ljava/lang/String;�extraHeader�endWrite�getOut�()Ljava/io/OutputStream;�writeln�+(Ljava/io/OutputStream;Ljava/lang/String;)V�isCancelled�flush�getIn�()Ljava/io/InputStream;� +getHeaders�done� +getContent�()Ljava/lang/Object;�setResponse�handleGenericError�(Ljava/lang/Exception;)V�fireUploadCanceled�'(Lcom/radinks/dnd/events/UploadEvent;)V�fireUploadCompleted�guiComponent�Ljavax/swing/JComponent;�rman�%Lcom/thinfile/upload/ResourceManager;�#com/thinfile/upload/ResourceManager� +getMessage�javax/swing/JOptionPane�showMessageDialog�)(Ljava/awt/Component;Ljava/lang/Object;)V�stopMe�canContinue�sendFile�'(Ljava/io/File;Ljava/io/OutputStream;)V�bytesWritten�handleSocketError�props�Ljava/util/Properties;�&(Ljava/lang/Object;)Ljava/lang/Object;�isEmpty�keys�()Ljava/util/Enumeration;�java/util/Enumeration�nextElement�hasMoreElements�!�v�w������x�y�����z�{����|�}����~�{��������������������c�����%*��*��*��Y����*��*��Y���� �������������C��0� �4��8��=�$�E���������%����������������H����F�� +Y��M>+��4+2��:�� +������*��:*������:������Y����*��������������:,��Y����*����������,�� ��,!����,����,�� ��,"����*��#��$��%�:��,������,&����,�� ��,��Y��'����(��)������,�� ��*��,��*��+�W,��,*Y��`����*��-��.���̧�M����AD�/��������!���V��W��Y��[� �]�(�_�+�a�3�c�:�e�C�i�K�j�w�l���m���o���q���r���t���u���v���x���������������!��%��/��2��;�WA��D��E�������\� �3��������w����������b������#������ +7���{��9�����E���������F��������F����������������������U<=*����0���!*����1���2��2N-�``<������Y����*�����������``<���������������������"���)���/���S�������*��"��������+���{����U��������S���{����������������ջ�3Y*��4M*��5��6 ���*��7��8*+��9���.*��:**��;<��=����>Y*��;��?����@Y*��;��A��B**��B��C*��B*��D��E*��B��F*��B��G*��B��Y��H��*��������I*��5��6*��J�a*��K��L�a*�� ��L�a�MaB*��5!��O�*��B��Y��'��!��P������I*��Q��*��B*��Q��I*��B��R*��B��S:**��K����T*�� ��*�� ��L��**�� ����T*+��9���U*��5��V��U*��Y����*����������T�� ����W*��B��X:*��B��YW*��Z,*��B��[��\��]��N,��]*-��^*��5��V��*,��_��!*,��`��*��a*��bW*��bWc��d��e*��f���*���/��������(����� ���������&���*���S���[���f���m���t��������������������������������������)��5��?��`��h��m��v��~����������������������������H�v�������������������������� +��������������������}�� ����������������s������>+����*��5��g���+2��:�� +��,������t,*��*����1���2��2��,�� ��*,��h�� +��1,�� ��*Y��i*��*Y��Z`����1���2��2�`�a��i��:*��k��:*��^���a����*���j�-�����j��*���/�-�����/������N���$�)�*�",�*.�-7�D8�K;�R<�Z>�a?��I��B��D��I��F��H��$��K�����H���n���������������������������{���������������������������������������=������*��lm��n��oL+���+��p���+��qM,��r���\N*�� ��Y����*������\Y�� ��s������W*�� ��Y��t��-��������W*�� ��\Y�� ��s��W*�� ��\Y�� ��s��W*�� +-��n��\��W,��u���*�� ��\Y�� ��s��W��\���������6� +��T� +U�[�^�'`�Ra�rb��c��d��e��g��m��o�����*��'�������������������������� +���������������PK +������N|7�0�T������"���com/radinks/dnd/PosterBase$1.class������-�5 +� � �� �� ��! ��" +�#�$ +��%�&�'�(�this$0�Lcom/radinks/dnd/PosterBase;� Synthetic�<init>�(Lcom/radinks/dnd/PosterBase;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�Lcom/radinks/dnd/PosterBase$1;�actionPerformed�(Ljava/awt/event/ActionEvent;)V�e�Ljava/awt/event/ActionEvent;� +SourceFile�PosterBase.java��)���*�+�,�-�.�/�0�1�2�3�4�)�com/radinks/dnd/PosterBase$1�java/lang/Object�java/awt/event/ActionListener�()V�com/radinks/dnd/PosterBase�done�Z�mon�)Lcom/radinks/net/AbstractProgressMonitor;�bytesWritten�J�'com/radinks/net/AbstractProgressMonitor�count�(J)Z�stopMe� �� �� +������ +��������������4����� +*��*+��������������Z�������� +������������b�����&*������*����*�������� +*����������������\��^�%�`��������&�������&������������� +��������PK +������N|7HJU�#���#�� ���com/radinks/dnd/PosterBase.class������-� +�s�� �r���� +��� �r�� �r���� +��� �r�� �r�� �r���� �r������ +�� +� �r �r �r �r �r +��� �r + + �r +� +� +� +� +� +� �r + +� +��'�' +�I + �r + !"# +�/$ +�r% +�/& +'( +) +*+ +, +- +./ +.01 +234 +5!6 �r7 �r8 �r9 +: +; +< �r= +�I>? +�@A +�IB +�0CD +�IE �rF�� +GH �rIJ +�rKLM +�INOPQR �rST �rU +�IV +�IW +�IX +YZ +[H\] +^_ +^`ab +�iK +�ic +�id +ef +�ig +ehijk�seekPos�J�topDog�Ljava/lang/StringBuffer;�auth�Ljava/lang/String;�CRLF�[B�mon�)Lcom/radinks/net/AbstractProgressMonitor;�done�Z� listeners�Ljava/util/Vector;�guiComponent�Ljavax/swing/JComponent;�bytesWritten�postLocation�style�nameMap�Ljava/net/FileNameMap;�props�Ljava/util/Properties;�timer�Ljavax/swing/Timer;�ftpMode�I�sendFullPath�sendPathTranslated� +encodePath�extraHeader�pwd�tmpDir�parent_path�EXTRA_HEADER� +ConstantValue� FULL_PATH�ENCODE_PATH�boundary�rman�%Lcom/thinfile/upload/ResourceManager;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/PosterBase;�removeUploadListener�*(Lcom/radinks/dnd/events/UploadListener;)V�v�l�'Lcom/radinks/dnd/events/UploadListener;�addUploadListener�stopMe�fireUploadCompleted�'(Lcom/radinks/dnd/events/UploadEvent;)V�i�count�e�$Lcom/radinks/dnd/events/UploadEvent;�fireUploadCanceled�setGuiComponent�(Ljavax/swing/JComponent;)V�getGuiComponent�()Ljavax/swing/JComponent;�writeln�+(Ljava/io/OutputStream;Ljava/lang/String;)V�out�Ljava/io/OutputStream;�value� +Exceptionslm�setPostLocation�(Ljava/lang/String;)V� sLocation�doStuff�(Ljava/util/List;)V�fileList�Ljava/util/List;�sendFile�'(Ljava/io/File;Ljava/io/OutputStream;)V�in�Ljava/io/FileInputStream;�f�Ljava/io/File;�.(Ljava/io/InputStream;Ljava/io/OutputStream;)V�Ljava/io/InputStream;�max�b�handleGenericError�(Ljava/lang/Exception;)V�ex�Ljava/lang/Exception;�handleSocketError� +setMonitor�,(Lcom/radinks/net/AbstractProgressMonitor;)V�setPwd�setAuth�getAuth�()Ljava/lang/String;� getTmpdir� setTmpdir�tmpdir� +setParentPath�(Ljava/io/File;)V�topFile�setProps�(Ljava/util/Properties;)V�s�makeFileName�"(Ljava/io/File;)Ljava/lang/String;�file�path� +getMonitor�+()Lcom/radinks/net/AbstractProgressMonitor;�proxyDetect�#(Lcom/radinks/dnd/HTTPConnection;)V� detective�Lcom/radinks/dnd/ProxyDetect;�location� Lcom/radinks/dnd/HTTPConnection;�<clinit>� +SourceFile�PosterBase.java�����t�u�java/lang/StringBuffer�v�w�~��java/util/Vector�����������u�����y�javax/swing/Timer�com/radinks/dnd/PosterBase$1�InnerClasses��n��o���������������7---------------------------236946332215246208634955RD39���y�#com/thinfile/upload/ResourceManager����pqr����stuvwt��xyz{���|�}|}~����%com/radinks/dnd/events/UploadListener������������z�{�������java/io/FileInputStream����������������������~��������An Error Was Encountered����File Upload Interrupted�������y�x�y���y�����������y���--���java/lang/String����6Content-Disposition: form-data; name="userfile_parent"�/������������y�url�����ftp_mode�active�t� full_path�yes�translate_path�encode_path����extra_header���y����������java.vendor�� Sun Micro�com.radinks.dnd.BrowserProxy����v�com/radinks/dnd/ProxyDetect�com.radinks.dnd.SniffProxy�������������x�java/lang/Exception�com/radinks/dnd/PosterBase�java/lang/Object�$java/io/UnsupportedEncodingException�java/io/IOException�(Lcom/radinks/dnd/PosterBase;)V�#(ILjava/awt/event/ActionListener;)V�java/net/URLConnection�getFileNameMap�()Ljava/net/FileNameMap;�contains�(Ljava/lang/Object;)Z�clone�()Ljava/lang/Object;� +removeElement�(I)V� +addElement�(Ljava/lang/Object;)V�stop�'com/radinks/net/AbstractProgressMonitor� +setVisible�(Z)V�size�()I� elementAt�(I)Ljava/lang/Object;�uploadCompleted�uploadCanceled�getBytes�()[B�java/io/OutputStream�write�([B)V�java/io/File�isDirectory�()Z�"com/radinks/net/NetProgressMonitor�initMonitor�#(Ljava/io/File;Ljava/lang/String;)V�close�java/io/InputStream�read�([BII)I�canContinue�java/awt/Component� setCursor�(Ljava/awt/Cursor;)V�([BII)V�setCanContinue�java/lang/Throwable�printStackTrace�toString�javax/swing/JOptionPane�showMessageDialog�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)V�getBytesToRead�()J�setBytesToRead�(J)V� getParent� +getParentFile�()Ljava/io/File;�getAbsolutePath�replace�(CC)Ljava/lang/String;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�endsWith�(Ljava/lang/String;)Z�java/util/Properties�getProperty�&(Ljava/lang/String;)Ljava/lang/String;�equals�indexOf�(Ljava/lang/String;)I�length� substring�(I)Ljava/lang/String;�getName�java/lang/System�java/lang/Class�forName�%(Ljava/lang/String;)Ljava/lang/Class;�newInstance�detect�getProxyHost�com/radinks/dnd/HTTPConnection�setProxyHost�getProxyPort�setProxyPort�!�r�s������t�u����v�w����x�y����z�{����|�}����~���������������������u������y������y����������������������������������������������������y������y������y������y������y�������]����y�������X����y�������[����y���������������������������r*��* ��*��Y����*��*��Y���� *�� +* ��*�� +*��Y��Y*������*��*��*��*��*��Y����*�������������B������� � �$��2��7�$�9�)�>�.�C�4�X�J�f�O�l�T�q�Y���_���j���q�����������r�����������������w�����)*�� ��$*�� +����*�� ����M,+��W*,�� ���������������������#���(������� �����������)���������)����������������~�����0*�� ����Y�� �� +*�� ����M,+���� +,+��!*,�� ������������������%���*���/������� ����0���������0�����������������������K�����*����"*��#��$*���������������������������������������������������������.*�� ��)*�� ��%=>��*�� ��&��'+��(����������������������������'���-�������*������������������.���������.����������������������.*�� ��)*�� ��%=>��*�� ��&��'+��)����������������������������'���-�������*������������������.���������.����������������>�����*+�� +��������� +������������������������������������������/�����*�� +����������������������������������������k�����!+,��*��++��,��+*Y��,��*�`�a����������������������� ������� ����!���������!��������!���y����������������������>�����*+�� +��������� +���� ���������������������y������������5������������������ +����������������������������������������'+��-��"*��#+��.���/Y+��0N*-,��1-��2����������������"�&#�����*��� +��������'���������'��������'������������������������������` �>�:+��36*��#��4��*�� +��>*�� +��5��3��$,��6*Y���a��*Y���a����������������6� +��-�.� 3�4�6�$8�/=�5?�>@�JA�VC�\E�_N�����>����`���������`��������`�������\������ �W���{���M������������������������[�����*��#��7+��8*�� ++��9:��;������������W�X�Y�\����������������������������������[�����*��#��7+��8*�� ++��9<��;������������d�e�f�h����������������������������������Z�����*��#��+*��#��=��>�*+��#������������q�s�u�v�������������������|�}������������>�����*+��?��������� +���z�{���������������������y������������>�����*+��@��������� +�������������������������x�y������������/�����*��@���������������������������������������/�����*��A���������������������������������������>�����*+��A��������� +���������������������������y�����������������*+��B�� ++��C��D��+��D��E*����**��E\/��F��E*����Y��G��H*����H��IY��,��J��H��K��HW*��L��HW*����IY��,��J��HW*����IY��,��J��HW*��*��E��HW*��EM��N����Y��*Z��E��HM��H��K��E���������.�������!��0��[��e��w������������������������������������������������ +������*+��O*+P��Q��R*+S��Q��T+U��QM,��*,V��W������+X��QM,��1*,Y��W��*���� +Z��QM*,��,Y��W������+[��QM,�� +*,Y��W��\*+]��Q��^���������F����������� ��$��6��=��A��K��R��Y��o��v��z������������ ��������������������� �o���y������������������hM*����Z+��DM*��A��,*��A��_��,*��A��`��aM*����,\/��FM*��?��#,*��?��_��,*��?��`��aM��+��bM,���������.������� +����"�.�6�? �R�a�f����� ����h���������h�������f���y������������/�����*��#��������������������������������������������Jc��de��_��f��g��h��iM��j��g��h��iM,*�� +��k,��l+,��m��n+,��o��p��M�����E�H�q������*� +��'�)�-�)/�10�51�=2�E7�H4�I8�����4���������)�������I����������J���������J����������������)�������Y +TY +T��,�������������-������������� +��������PK +������N|7o[@'��'�� ���com/radinks/dnd/PosterPlus.class������-�- +�� +�� +�� +�� +� �!�"�#�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/PosterPlus;�sendFile�'(Ljava/io/File;Ljava/io/OutputStream;)V�files�[Ljava/io/File;�f�Ljava/io/File;�out�Ljava/io/OutputStream;� +Exceptions�$� +SourceFile�PosterPlus.java�� �%�&�'�(�)�*�+�,���com/radinks/dnd/PosterPlus�com/radinks/dnd/Poster�java/io/IOException�java/io/File�isDirectory�()Z� listFiles�()[Ljava/io/File;� sendFiles�,([Ljava/lang/Object;Ljava/io/OutputStream;)V�com/radinks/dnd/PosterBase�!���������� �� +���/�����*����������������������� +�������� +���x�����+����+��N*-,���� *+,�������������������� ��#��%����*���������� +���������������������������PK +������N|7A������!���com/radinks/dnd/ProxyDetect.class������-�" +�� �� �� ��� �!� proxyHost�Ljava/lang/String;�postLocation� proxyPort�I�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/ProxyDetect;�detect�getProxyPort�()I�getProxyHost�()Ljava/lang/String;�setPostLocation�(Ljava/lang/String;)V� +SourceFile�ProxyDetect.java�� +� +���� ��com/radinks/dnd/ProxyDetect�java/lang/Object�!�������������� ������ +������� +�����=�����*��*P����������������� +���������������� +�����+��������������������������������������/�����*����������������������������������/�����*����������������������������������>�����*+���������� +����"��#���������������� ��������PK +������N|7o.������� ���com/radinks/dnd/SniffProxy.class������-�X +��,�-�. +��/ +��0�1�2�3 +�4�5 +��6 +��7 +��8�9 +�:�; +�:�< ��= +�>�? ��@�A�B�C�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/SniffProxy;�detect�parts�[Ljava/lang/String;�u�Ljava/net/URL;� proxyTest�Ljava/net/HttpURLConnection;�reader�Ljava/io/BufferedReader;�s�Ljava/lang/String;�ex�Ljava/lang/Exception;� +SourceFile�SniffProxy.java���java/net/URL�"http://www.radupload.com/proxy.php��D�E�F�java/net/HttpURLConnection�java/io/BufferedReader�java/io/InputStreamReader�G�H�I��J��K�L�M�:�N�O�P�Q�R�S�'�T�U�P�V�W�java/lang/Exception�com/radinks/dnd/SniffProxy�com/radinks/dnd/ProxyDetect�(Ljava/lang/String;)V�openConnection�()Ljava/net/URLConnection;�java/net/URLConnection�getInputStream�()Ljava/io/InputStream;�(Ljava/io/InputStream;)V�(Ljava/io/Reader;)V�readLine�()Ljava/lang/String;�java/lang/String�indexOf�(Ljava/lang/String;)I�split�'(Ljava/lang/String;)[Ljava/lang/String;� proxyHost�java/lang/Integer�parseInt� proxyPort�I�!���������������3�����*���������� +��������������������������������W��Y��L+����M��Y��Y,�� �� +��N-��: +���� +��:*2��*2������L�����R�U������.���� � +�!��"�%�#�+�$�6�&�?�'�G�(�R�/�U�,�V�2����H��?����� +�H� �!���@�"�#��%�-�$�%��+�'�&�'��V���(�)����W������*����+PK +������N|7�?][��[��(���com/radinks/dnd/events/UploadEvent.class������-�! +��� �� ���� �response�Ljava/lang/String;�contentType�<init>�(Ljava/lang/Object;)V�Code�LineNumberTable�LocalVariableTable�this�$Lcom/radinks/dnd/events/UploadEvent;�src�Ljava/lang/Object;�getResponse�()Ljava/lang/String;�setResponse�(Ljava/lang/String;)V�setContentType�getContentType� +SourceFile�UploadEvent.java� +�� text/html� ����"com/radinks/dnd/events/UploadEvent�java/util/EventObject�!������������ ������ +������H�����*+��*������� +�������������������������������������/�����*������� +���������������������������>�����*+������� +��� +��������������������������������>�����*+������� +��� +���������������������� ����������/�����*������� +������� ������������������PK +������N|7�*���������+���com/radinks/dnd/events/UploadListener.class������-� +�� �uploadCompleted�'(Lcom/radinks/dnd/events/UploadEvent;)V�uploadCanceled� +SourceFile�UploadListener.java�%com/radinks/dnd/events/UploadListener�java/lang/Object���������������������PK +������N|7��R ��R ��+���com/radinks/dnd/https/DNDTrustManager.class������-�d +��> ��?�@ +�A�B +�A�C +�A�D�E�F +��G�H� +�I +�J�K�L +��M� +�N� +�O ��P�Q�R +�S�T�U�V�userAcceptsCert�Z�standardTrustManager�"Lcom/sun/net/ssl/X509TrustManager;�<init>�(Ljava/security/KeyStore;)V�Code�LineNumberTable�LocalVariableTable�this�'Lcom/radinks/dnd/https/DNDTrustManager;�keystore�Ljava/security/KeyStore;�factory�%Lcom/sun/net/ssl/TrustManagerFactory;� +trustmanagers�[Lcom/sun/net/ssl/TrustManager;� +Exceptions�W�isClientTrusted�(([Ljava/security/cert/X509Certificate;)Z�certificates�%[Ljava/security/cert/X509Certificate;�isServerTrusted�e�)Ljava/security/cert/CertificateException;�certificate�$Ljava/security/cert/X509Certificate;�retval�getAcceptedIssuers�'()[Ljava/security/cert/X509Certificate;�allowUntrusted�()Z�sel�I�<clinit>�()V� +SourceFile�DNDTrustManager.java��;���SunX509�X�Y�Z�[��\�]�&java/security/NoSuchAlgorithmException�#SunX509 trust manager not supported��^� com/sun/net/ssl/X509TrustManager�*�+�_�`�;�'java/security/cert/CertificateException�6�7�.�+�4�5���]The security certificate on this server is not valid or has expired. Do you wish to continue?�Invalid Certificate�a�b�c�%com/radinks/dnd/https/DNDTrustManager�java/lang/Object�java/security/KeyStoreException�#com/sun/net/ssl/TrustManagerFactory�getInstance�9(Ljava/lang/String;)Lcom/sun/net/ssl/TrustManagerFactory;�init�getTrustManagers�!()[Lcom/sun/net/ssl/TrustManager;�(Ljava/lang/String;)V�"java/security/cert/X509Certificate� +checkValidity�javax/swing/JOptionPane�showConfirmDialog�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)I�!���� +��������������������������3*��*����M,+��,��N-��� +��Y�� �*-2�� +����������&� ������ ����������(�"�2�#����*����3� �!�����3�"�#���$�$�%����&�'��(������)��*�+�����?�����*��+���������������'��������� �!������,�-���.�+�����������3+��+���+2M,���� N*����*��+���=��*��������� +�����.����3� +�4��6��:��8��9��;��=�(�>�,�@�1�B����4����/�0����1�2��(��3�����3� �!�����3�,�-���4�5�����4����� +*�����������������G�������� +� �!����6�7�����^�����������<������������������L��N��P��S��������8�9����� �!����:�;���������������������������<����=PK +������N|7�u�������+���com/radinks/dnd/https/HTTPSConnection.class������-�� +�0�P �/�Q�R +�S�T�U�V +��W +�S�X�Y +�Z�[�\ +�Z�] +��P �0�^ +�_�` +�_�a �0�b +�S�c +�d�e �0�f�g +��h +��i �0�j +��k �0�l�m �0�n +��o�p +��q�r +��s�t +��u�v +��] +�w�x +�y�z�{�|�} +�*�~ +�)� +�)�� +���������context�Lcom/sun/net/ssl/SSLContext;�<init>�(Ljava/lang/String;)V�Code�LineNumberTable�LocalVariableTable�e�Ljava/lang/Exception;�this�'Lcom/radinks/dnd/https/HTTPSConnection;�postLocation�Ljava/lang/String;� +Exceptions���openConnection�()V�proxy�Ljava/net/Socket;�factory� Ljavax/net/ssl/SSLSocketFactory;�header�bin�Ljava/io/BufferedReader;�sslPort�I�sslHost����� +SourceFile�HTTPSConnection.java�3�4�1�2�SSL�������com/sun/net/ssl/TrustManager�%com/radinks/dnd/https/DNDTrustManager�3�������java/lang/Exception�����A�java/lang/RuntimeException���������������������=�������������C�javax/net/ssl/SSLSocket���A�����������������java/net/Socket���J�3���java/lang/StringBuffer�3�A�CONNECT �����:����� + HTTP/1.1 +������������� + +�java/io/BufferedReader�java/io/InputStreamReader�3���3�������������%com/radinks/dnd/https/HTTPSConnection�com/radinks/dnd/HTTPConnection�java/net/MalformedURLException�java/io/IOException�java/net/UnknownHostException�com/sun/net/ssl/SSLContext�getInstance�0(Ljava/lang/String;)Lcom/sun/net/ssl/SSLContext;�(Ljava/security/KeyStore;)V�init�[([Lcom/sun/net/ssl/KeyManager;[Lcom/sun/net/ssl/TrustManager;Ljava/security/SecureRandom;)V�java/lang/Throwable�printStackTrace�toString�()Ljava/lang/String;�location�Ljava/net/URL;�java/net/URL�getPort�()I�getHost� proxyHost�getSocketFactory�"()Ljavax/net/ssl/SSLSocketFactory;�javax/net/SocketFactory�createSocket�&(Ljava/lang/String;I)Ljava/net/Socket;�sock�startHandshake�getInputStream�()Ljava/io/InputStream;�in�Ljava/io/InputStream;�getOutputStream�()Ljava/io/OutputStream;�out�Ljava/io/OutputStream;� proxyPort�(Ljava/lang/String;I)V�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�(I)Ljava/lang/StringBuffer;�java/lang/String�getBytes�()[B�java/io/OutputStream�write�([B)V�(Ljava/io/InputStream;)V�(Ljava/io/Reader;)V�readLine�javax/net/ssl/SSLSocketFactory�8(Ljava/net/Socket;Ljava/lang/String;IZ)Ljava/net/Socket;�!�/�0������1�2�����3�4��5���������@*+��*��*����*����Y��Y��S����M,�� +��Y,���� +���� +�+�.� ��6���&� ������ +����+�!�.��/��3� �?�"�7��� ��/��8�9����@�:�;�����@�<�=��>�����?��@�A��5�������*������ ��� +*����<*����M*����6**����,����*������**������**�����������Y*��*����N*����:*-����*-������Y�� ��!,��!"��!��#$��!��%:*����&��'*��(��&��'��)Y��*Y*����+��,:��-:*-,��.��*������**������**�����������6���V����&��'� �(�'�*�7�+�A�,�L�-�Z�6�j�7�s�:�{�;���<���>���B���D���E���I���J���M���N�P�7���H��j���B�C��s���D�E����`�F�=����4�G�H����:�;������I�J�� ���K�=��>�����L�M��N����OPK +������N|71V:��:��'���com/radinks/dnd/util/CommonUtil$1.class������-�O +��% ��& �'�( �'�)�* +��% �'�+ +��,�- +�.�/�0 +��1 +��2 +�3�4 +�5�6�7�8�9�this$0�!Lcom/radinks/dnd/util/CommonUtil;� Synthetic�<init>�$(Lcom/radinks/dnd/util/CommonUtil;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�#Lcom/radinks/dnd/util/CommonUtil$1;�actionPerformed�(Ljava/awt/event/ActionEvent;)V�e�Ljava/awt/event/ActionEvent;� +SourceFile�CommonUtil.java��:���;�<�=�>�?�java/lang/StringBuffer�@�A�B�C�mess.proced�D�E�F�: �B�G�H�I�J�K�L�M�N�:�!com/radinks/dnd/util/CommonUtil$1�java/lang/Object�java/awt/event/ActionListener�()V�com/radinks/dnd/util/CommonUtil� +scaleCount�I� pane_wait�Ljavax/swing/JOptionPane;�waitMessage�Ljava/lang/String;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�#com/thinfile/upload/ResourceManager� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�(I)Ljava/lang/StringBuffer;�toString�()Ljava/lang/String;�javax/swing/JOptionPane� +setMessage�(Ljava/lang/Object;)V�java/awt/Component�repaint� ������������������������4����� +*��*+��������������[�������� +������� �����������T*������L*������B*������Y��*������ �� +����*�������� +��*������������������\��]�I�^�S�`��������T�������T�!�"���#����$���� +��������PK +������N|7zl�í�����%���com/radinks/dnd/util/CommonUtil.class������-$ +��� �K�� �K�� �K���� �K�� �K������ +� �� +��� �K���� +� +���� +���� +� +�� �:���� +���� +���� +� +�� +� +�� +���� �K������ +��� +��� +��� +��� +��� �K���� +���� +��� �K�� +���� +�������� +���� +���� +���� +���� +���� �K���� +���� +���� +���� �K���� +�����P +���� �K���� +�:�� +�:�� +�:�� +�:�� +�:�� +�:�� �K�� �K���| +�:�� +�K���� +�������������rejectUnwanted�Z�nameMap�Ljava/net/FileNameMap;�reject�tmpdir�Ljava/lang/String;� +scaleCount�I�waitMessage� pane_wait�Ljavax/swing/JOptionPane;�dia�Ljavax/swing/JDialog;� +textFields�Ljava/util/Hashtable;�allowedType�Ljava/lang/Object;�fileSize�J�guiComponent�Ljavax/swing/JComponent;�props�Ljava/util/Properties;�timer�Ljavax/swing/Timer;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�!Lcom/radinks/dnd/util/CommonUtil;�show_dialog�options�[Ljava/lang/Object;� transform�"(Ljava/util/List;)Ljava/util/List;�list�Ljava/util/List;�makeTempFileName�&(Ljava/lang/String;)Ljava/lang/String;�absPath�setGuiComponent�(Ljavax/swing/JComponent;)V� +setAllowTypes�([Ljava/lang/String;)V�s�[Ljava/lang/String;�getFileExtension�filename�dot�setProps�(Ljava/util/Properties;)V� getTmpdir�()Ljava/lang/String;�createTempFile�"(Ljava/lang/String;)Ljava/io/File;�newPath�fout�Ljava/io/File;�parent�getFileSize�()J� +setTextFields�(Ljava/util/Hashtable;)V� isAllowed�(Ljava/io/File;)Z�i�f�types�ext�()Z�isValidFileName�(Ljava/lang/String;)Z�isWebUrl�<clinit>� +SourceFile�CommonUtil.java�f�g�P�M�Q�R�S�T���U�R�V�W�javax/swing/Timer�!com/radinks/dnd/util/CommonUtil$1�InnerClasses�f���f���d�e�java/lang/StringBuffer�java.io.tmpdir�����u�������R�uploader�������������������������N�O�java/lang/Object�javax/swing/JOptionPane����������������`�a�upload�u�X�Y �os.name�Windows + +���\�]�.���b�c� +filter_action�L�M�java/io/File�f�����g ���^�_�Z�[!���}�u�\w"#�[\.\-_ ]�http://�https://�com/radinks/dnd/util/CommonUtil�$(Lcom/radinks/dnd/util/CommonUtil;)V�#(ILjava/awt/event/ActionListener;)V�java/lang/System�getProperty�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;� separator�java/util/Calendar�getInstance�()Ljava/util/Calendar;�getTimeInMillis�(J)Ljava/lang/StringBuffer;�toString�java/net/URLConnection�getFileNameMap�()Ljava/net/FileNameMap;� +setOptions�([Ljava/lang/Object;)V� +setOptionType�(I)V�setMessageType� +setMessage�(Ljava/lang/Object;)V�#com/thinfile/upload/ResourceManager� +getMessage�createDialog�=(Ljava/awt/Component;Ljava/lang/String;)Ljavax/swing/JDialog;�java/awt/Dialog�setModal�(Z)V�java/awt/Component� +setVisible�java/lang/String�indexOf�(Ljava/lang/String;)I�charAt�(I)C�length�()I� substring�(II)Ljava/lang/String;� +startsWith�lastIndexOf�(I)Ljava/lang/String;�toLowerCase�java/util/Properties�equals�(Ljava/lang/Object;)Z�(Ljava/lang/String;)V� +getParentFile�()Ljava/io/File;�exists�mkdirs�deleteOnExit�isDirectory�getName� +replaceAll�8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;�!�K������L�M����N�O����P�M����Q�R����S�T����U�R����V�W����X�Y����Z�[����\�]����^�_����`�a����b�c����d�e�����f�g��h���������f*��*��*��*��*��*��*��Y�� Y*�� +����*�� +Y����������������������*���������i���*� +���c��(� �/��4��8��9��Y�4�d�^�f�e�h�j�������f�k�l����m�g��h���������X��L*��Y����*��+��*����*����*��*���� **��*��!"��#��$��%*��%��&*��%��'�����i���*� +���p��q��r��s� �t�(�u�3�w�G�x�O�y�W�z�j�������X�k�l����S�n�o���p�q��h���6�����+�����i�������}�j��������k�l������r�s���t�u��h���������r(��)��*��++��+:��!�� +Y��*����++��,��-�����+����.���� +Y��*����+������� +Y��*��������+���������i������������6���@���V���j�������r�k�l�����r�v�R���w�x��h���>�����*+��!�����i��� +���������j��������k�l������`�a���y�z��h���=�����+��/�����i��� +���������j��������k�l������{�|�� �}�u��h���]�����*0��1<��*���2��3��3������i������������������j��������~�R������T��������h���w�����%*+��4+5��6M,��,7��8�� +��9����9�����i������������������ ���$���j��� ����%�k�l�����%�b�c����{�R��������h���/�����*�������i���������j��������k�l���������h���������5��:Y+��;M,��<N-��=��-��>W-��?��-��@�� +*���,��?,�����i���*� +����� ������������!���(���-���/���3���j���*����5�k�l�����5���R�� �,�������'������������h���/�����*��A�����i���������j��������k�l���������h���>�����*+��B�����i��� +���������j��������k�l������Z�[�� ������h���������:��/�����/��C��CL*��D��EM,��>+���,+2��8������������i���*� +��������������������&���0���2���8�j���*�� ����T����:��������(���|��� ���R���L����h���.�������9�����i�������j��������k�l��� ������h���[�����*F��GL+H��GL+��,���������i������� ��j��������~�R��� ��{�R�� ������h���B�����*I��.��*J��.���������i������$�j��������{�R������g��h�����������9�����i�������������������� +�� ������PK +������N|7�Q:�������#���com/radinks/dnd/util/DemoUtil.class������-�X +��-�. +�/�0 +�1�2��������3 +�4�5 +�6�7 +�8�9�: +�;�<�=�>�?�@�A�B�C�D�E�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/util/DemoUtil;�lockDown�.(Ljava/util/Properties;Ljavax/swing/JApplet;)V�uploadLimit�J�codebase�Ljava/net/URL;�ex�Ljava/lang/Exception;�props�Ljava/util/Properties;�applet�Ljavax/swing/JApplet;�uplimit�Ljava/lang/String;� +SourceFile� +DemoUtil.java��� +max_upload�F�G�H�I�J�K�100000�L�M�N�O�P�Q�R�S�T�upload.thinfile.com�U�V�W�external_redir�!http://upload.thinfile.com/store/�redirect_delay�9000�external_target�_top�java/lang/Exception�com/radinks/dnd/util/DemoUtil�java/lang/Object�java/util/Properties�getProperty�&(Ljava/lang/String;)Ljava/lang/String;�java/lang/Integer�parseInt�(Ljava/lang/String;)I�java/util/Hashtable�put�8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;�java/applet/Applet�getCodeBase�()Ljava/net/URL;�java/net/URL�getHost�()Ljava/lang/String;�java/lang/String�equals�(Ljava/lang/Object;)Z�!���������������/�����*��������������������������� �����������v*��M,��#,���B!���� ! ���*��W��*��W+��3+�� N-��-�� +����* +��W*��W*��W�� +N*��W����h�k������F�������������(��+��4� �8�"�=�#�M�%�V�&�_�'�h�.�k�+�l�-�u�/����>����� ��=�+�!�"��l� �#�$����v�%�&�����v�'�(���o�)�*���+����,PK +������N|7����} +��} +��#���com/radinks/dnd/util/GZipUtil.class������-�� +�=�h�i +��h�j +�k�l +��m�n +��o �=�p�q +�=�r �=�s +�t�u�v +��h�w�x�y �=�z +��{ +��| +��}�~� �=���~�� +�<�� +��� �=�� +���� +�t�� �=�� +��� +��� +����� +������ +�=�� +����w�� +�=�������������� +������� +�1�� +�0���� +�4�� +�4�� +�0�� +���� +�4���� +���������<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/dnd/util/GZipUtil;� transform�"(Ljava/util/List;)Ljava/util/List;�f�Ljava/io/File;�list�Ljava/util/List;�newList�Ljava/util/ArrayList;�iter�Ljava/util/Iterator;�tmp� gzip_item�.(Ljava/io/File;Ljava/util/List;)Ljava/io/File;�f2�i�I�newFile� +directoryList�[Ljava/io/File;�gout� Ljava/util/zip/GZIPOutputStream;�gin�Ljava/io/FileInputStream;�b�[B�ex�Ljava/io/IOException;�ext�Ljava/lang/String;�fout�parent�flist�absPath� +SourceFile� +GZipUtil.java�>�?�java/lang/StringBuffer� mess.gzip����������� +�������a� mess.wait���?���������?�java/util/ArrayList�������java/io/File���a�>�������������������������P�Q�������������?���?���T�������������.�������..�������������gz�zip�bz�bz2�tgz�.gz�����java/util/zip/GZIPOutputStream�java/io/FileOutputStream�>���>���java/io/FileInputStream�������������?�java/io/IOException�����?�com/radinks/dnd/util/GZipUtil�com/radinks/dnd/util/CommonUtil�#com/thinfile/upload/ResourceManager� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�toString�()Ljava/lang/String;�waitMessage�show_dialog�timer�Ljavax/swing/Timer;�javax/swing/Timer�start�java/util/List�iterator�()Ljava/util/Iterator;�tmpdir�(Ljava/lang/String;)V�exists�()Z�mkdirs�java/util/Iterator�hasNext�reject�Z�next�()Ljava/lang/Object;�add�(Ljava/lang/Object;)Z�dia�Ljavax/swing/JDialog;�java/awt/Dialog�hide�stop� +scaleCount�getAbsolutePath�isDirectory�getName�java/lang/String�equals�makeTempFileName� listFiles�()[Ljava/io/File;�getFileExtension� +getParentFile�()Ljava/io/File;�(Ljava/io/File;)V�(Ljava/io/OutputStream;)V�read�([BII)I�write�([BII)V�"java/util/zip/DeflaterOutputStream�close�java/lang/Throwable�printStackTrace�!�<�=�������>�?��@���x�����B*��*��Y������������ ��Y��*Z�� �� +���������� �����A������������A��B�������B�C�D����E�F��@�������y*��*���� +��Y��M+���N��Y*����:���� ��W-�����)*����"*-�����,��:�� +,��W���*����*����*��,�����A���B����"��#��%��&��'�'�)�/�*�5�,�E�-�U�.�Z�/�a�1�d�2�k�3�r�4�w�5�B���>��U��G�H����y�C�D�����y�I�J���f�K�L���_�M�N��'�R�O�H���P�Q��@�������l*�����+��N+�� ��c+��!"��#��+��!$��#�����Y*+��!��%��:��W+��&:6���*2,��:,��'�W�����+��!��(:��7)��#��+*��#��!+��#��,��#�� +-��#��+���Y��Y��*-��%��.������:��/:������W���� �� +*�����0Y��1Y��2��3:��4Y+��5:��: 6 + ���66 + +���� +��7�����8��9*Y��`���:��;*������]^�:��A�����(���A��G� �J��L��Q�-�R�/�T�@�U�F�W�L�Y�W�Z�c�[�l�Y�r�]�u�e�~�f���i���l���m���o���p���r���w���x���}�~�!��$��1��7��:��G��L��Q��[��^��`��e��j���B������c� �R�H��O�#�S�T��@�5�U�H��L�)�V�W��N�X�Y��D�Z�[�!�=�\�]� $�:�S�T� +`��^�_��~���`�a������b�H������c�H���l�C�D����l�G�H���l�d�J��^�e�a���f����gPK +������N|77�r/2��2��$���com/radinks/dnd/util/ScaleUtil.class������-� +��-. +�- ��/ ��0 ��1 ��2 ��3 ��4 ��5 ��6 ��7 +89:;< +�= ��> ��?;@ ��AB +�-C +�D +�EF +�G +HIJK +�wLMN +�wO +PQ �R �S ��T +��UVW ��XY +Z[\]^ +��_ ��` +ab;c �6def +�6g +�6h +�6i +�6j;klm ��nlo +��p;q ��r +st +au ��v +�6w +�6xyz +��{ +�6| ��}~ +���� +�w� +�w��� +��� +�Y� +�Y� +�� +��� +���� +�Y� +�Y�� ��� +�\� +�\� +��� +����� +�c� +�b� +���������� +��� ���� 8�� +��� +�� +�� +�Y�� ���� +�� +���� +�z�� +�}� +�� +�� +�� +�� +�� +�u�� ��� +��� +��� +��� +�� +����� +���� +��?@��������� +��� +s�� +��g +��� +��� +��� +��� +��� +�� +��� +��� +������ +��� +�� +��� +��� +������ inputList�Ljava/util/List;� +outputList�aft�Ljava/awt/geom/AffineTransform;� +imgOutputType�Ljava/lang/String;�dim_max�Ljava/awt/Dimension;�multipleImages�Z�uploadUnscaled�pass�I�tmpdirSaved�addWaterMark� waterMark�Ljava/lang/Object;�useJPegEncoder�jpegQuality�F� grayscale�<init>�()V�Code�LineNumberTable�LocalVariableTable�this� Lcom/radinks/dnd/util/ScaleUtil;� transform�"(Ljava/util/List;)Ljava/util/List;�s_maxW�s_maxH�ex�!Ljava/lang/NumberFormatException;�list�start�J�end�scale_images�(Ljava/util/List;)V�f�Ljava/io/File;�iter�Ljava/util/Iterator;�tmp� +scale_item�(Ljava/io/File;)Z�f2�i�newFile� +directoryList�[Ljava/io/File;� jpgStream�Ljava/io/BufferedOutputStream;�encoder�+Lcom/sun/image/codec/jpeg/JPEGImageEncoder;�param�*Lcom/sun/image/codec/jpeg/JPEGEncodeParam;�newSize�fout�bi2�Ljava/awt/image/BufferedImage;�op�"Ljava/awt/image/AffineTransformOp;�bi�oldSize�Ljava/io/IOException;�Ljava/lang/Exception;�absPath�mimeType�isJpeg�newPath�ext�make_newSize�*(Ljava/awt/Dimension;)Ljava/awt/Dimension;�ratio�scaleFactor�!(Ljava/awt/image/BufferedImage;)V�fsize�Ljava/awt/Font;�fontMetrics�Ljava/awt/FontMetrics;� +fontHeight� fontWidth�vdist�hdist�y�x�wImage�Ljava/awt/Image;�bim�width�height�g2d�Ljava/awt/Graphics2D;� grayScale� Ljava/awt/image/BufferedImageOp;�setProps�(Ljava/util/Properties;)V�tracker�Ljava/awt/MediaTracker;�props�Ljava/util/Properties;�s� readImage�.(Ljava/io/File;)Ljava/awt/image/BufferedImage;�imageReader�Ljavax/imageio/ImageReader;�iis�'Ljavax/imageio/stream/ImageInputStream;�readers�npe� Ljava/lang/NullPointerException;� +Exceptions� +writeImage�/(Ljava/io/File;Ljava/awt/image/BufferedImage;)Z�writers�writer�Ljavax/imageio/ImageWriter;�ios�(Ljavax/imageio/stream/ImageOutputStream;� +SourceFile�ScaleUtil.java�����java/awt/Dimension���������������������������������������java/util/ArrayList�����������������java/lang/StringBuffer�img_max_width[�����]������img_max_height[����� +img_max_width�img_max_height� +�������������java/lang/NumberFormatException� +scale_message��� +mess.scale�� +� mess.wait�Pass �� +���� +���X�java/io/File����������� ��!��"#��.�..$�%&'()*�+��gif,�-.�jpg� +image/jpeg/�0���1����23�java/awt/image/BufferedImage4���5� java/awt/image/AffineTransformOp������678�������java/io/BufferedOutputStream�java/io/FileOutputStream��9��:;<=>?@ABCDEF��$%�����java/io/IOExceptionGH�IOException in DNDPlusIJ�java/lang/ExceptionKL��MNOPQ�java/awt/Graphics2D�����java/lang/StringRSTUT� +java/awt/Font�roman��V�java/awt/Color��WXYZ[\]^_`aV�java/awt/Imagebc0d/def�java/awt/image/ColorConvertOpghi��jk�jpeg_qualitylmn�yes�1�upload_unscaled�img_output_type� watermarkopqr�java/net/URLstu�java/awt/MediaTracker��vwxy�z{|�javax/imageio/ImageReader}~�����������java/lang/NullPointerException�|�javax/imageio/ImageWriter�������com/radinks/dnd/util/ScaleUtil�com/radinks/dnd/util/CommonUtil�tmpdir�java/lang/System�currentTimeMillis�()J�java/util/List�size�()I�(I)V�addAll�(Ljava/util/Collection;)Z�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�(I)Ljava/lang/StringBuffer;�toString�()Ljava/lang/String;�java/util/Properties�getProperty�&(Ljava/lang/String;)Ljava/lang/String;�equals�(Ljava/lang/Object;)Z�trim�java/lang/Integer�parseInt�(Ljava/lang/String;)I�waitMessage�#com/thinfile/upload/ResourceManager� +getMessage�show_dialog�timer�Ljavax/swing/Timer;�javax/swing/Timer�iterator�()Ljava/util/Iterator;� separator�(Ljava/lang/String;)V�exists�()Z�mkdirs�getAbsolutePath�add�java/util/Iterator�hasNext�reject�next�()Ljava/lang/Object;�contains�dia�Ljavax/swing/JDialog;�java/awt/Component� +setVisible�(Z)V�stop� +scaleCount�isDirectory�getName�makeTempFileName� listFiles�()[Ljava/io/File;�nameMap�Ljava/net/FileNameMap;�java/net/FileNameMap�getContentTypeFor�getFileExtension�length� substring�(II)Ljava/lang/String;�getWidth� getHeight�(II)V�createTempFile�"(Ljava/lang/String;)Ljava/io/File;�getType�(III)V�#(Ljava/awt/geom/AffineTransform;I)V�filter�\(Ljava/awt/image/BufferedImage;Ljava/awt/image/BufferedImage;)Ljava/awt/image/BufferedImage;�(Ljava/io/File;)V�(Ljava/io/OutputStream;)V�"com/sun/image/codec/jpeg/JPEGCodec�createJPEGEncoder�C(Ljava/io/OutputStream;)Lcom/sun/image/codec/jpeg/JPEGImageEncoder;�)com/sun/image/codec/jpeg/JPEGImageEncoder�getDefaultJPEGEncodeParam�J(Ljava/awt/image/BufferedImage;)Lcom/sun/image/codec/jpeg/JPEGEncodeParam;�(com/sun/image/codec/jpeg/JPEGEncodeParam� +setQuality�(FZ)V�setJPEGEncodeParam�-(Lcom/sun/image/codec/jpeg/JPEGEncodeParam;)V�encode�err�Ljava/io/PrintStream;�java/io/PrintStream�println�java/lang/Throwable�printStackTrace�java/awt/geom/AffineTransform�getScaleInstance�#(DD)Ljava/awt/geom/AffineTransform;�getGraphics�()Ljava/awt/Graphics;�java/lang/Math�min�(II)I�max�(Ljava/lang/String;II)V�(IIII)V�java/awt/Graphics�setColor�(Ljava/awt/Color;)V�setFont�(Ljava/awt/Font;)V�getFontMetrics�()Ljava/awt/FontMetrics;�java/awt/FontMetrics�stringWidth� +drawString�guiComponent�Ljavax/swing/JComponent;�!(Ljava/awt/image/ImageObserver;)I� drawImage�3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z�java/awt/color/ColorSpace�getInstance�(I)Ljava/awt/color/ColorSpace;�7(Ljava/awt/color/ColorSpace;Ljava/awt/RenderingHints;)V�java/awt/image/BufferedImageOp�java/lang/Float� +parseFloat�(Ljava/lang/String;)F�isWebUrl�(Ljava/lang/String;)Z� +getToolkit�()Ljava/awt/Toolkit;�java/awt/Toolkit�getImage� (Ljava/net/URL;)Ljava/awt/Image;�(Ljava/awt/Component;)V�addImage�(Ljava/awt/Image;I)V� waitForID�javax/imageio/ImageIO�getImageReadersByMIMEType�((Ljava/lang/String;)Ljava/util/Iterator;�createImageInputStream�;(Ljava/lang/Object;)Ljavax/imageio/stream/ImageInputStream;�setInput�(Ljava/lang/Object;Z)V�read�!(I)Ljava/awt/image/BufferedImage;�dispose�%javax/imageio/stream/ImageInputStream�close�getImageWritersByFormatName�createImageOutputStream�<(Ljava/lang/Object;)Ljavax/imageio/stream/ImageOutputStream;� setOutput�(Ljava/lang/Object;)V�write�!(Ljava/awt/image/RenderedImage;)V�!�������������������������������������������������������������������������������������������������������������� +�����������������6*��*��Y����*��*��*��*��*�� *�� +**�������������*� +���n��:��A��F��K��a�#�f�(�k�-�o�5�p���������6����������������)����[�� +A*��Y+���h����*+��*����*��*��+���W*��*����Y����*����������:*����Y����*����������:*����?�� +����+�� +����*�� ��:*��!��:��*��*���� +��������"��#��$*���� +��������"��#��%*����%��+*����$�� *����+*��&�� +*�� +��*+��'��*+��'*Y��`������:�� +7*�����3LO�(������f���������������#���(���3���8���\����������������������������������2��:��?��L��O��Q��V�������H��\����������������Q���������[��������[������W�����V����������������������**��)����**��*��*��*����v*��Y��+��,��-������*��Y��*Z��*��.��,��-������**����2*����+��Y��*Z��*��/��*��`��-������**��0*��1��2+��3�M*�����*��Y��*������4������*����$��'��Y��*Z����*����$��5������*����%��"��Y��*Z����*����%��������Y��*Z������4��������6Y*����7N-��8��-��9W*-��:��*��-��;�W,��<���;*��=��4,��>���6:*��?��*����@���*����;�W���*��A��B*��1��C*��D**��������������� ����� +��� ���;���]���k����������������������������������������9��E��L��Q�Ydt�������������4��#�����������������������������E�}��������������� ����~*��=���+��E��r+��FG����+��FH�������6Y*+��F��I��7M,��9W+��JN6-���2-2:*��?��*����@���*����;�W�����+��:M*��K,��L�N-���6*,��I:+��F��M:��2N����(��Y����O��Od��P��Q����:-R����6*+��S:�����Y��T��U��V:��%*����%����$*����$���*����%��*����$���*��W: ���*��X: +��YY ��$ ��%��Z��[:��\Y*��]��^:��_W*��&�� *��`*�� +�� *��a*����T��O��bY��cY��6Y��7��d��e: + +��f:��g�:*�� ��h���i���j���* +��k�� +*��=�*Y��D`��D�*��X: *��&��*��`* ��k�*�� +��*��a* ��k�*��l��* ��k��:��no��p*��=�:��r��n+��F��p������Z�m��KZ�mLZ�mZ�m1Z�m2GZ�mHWZ�mXYZ�m����k�q��Kk�qLk�qk�q1k�q2Gk�qHWk�qXYk�q�����"�H��0�5� 8�=�(>�*@�:A�?C�DD�NE�TG�kI�wD�}M�Q��R��T��U��X��b��g��h��i��l��n��w��x��z��| �=�E�J�L�T�l�z���������������������������������#�)�2�9�?�H�O�X�Z�\�dikm +r|��������T�#������G�6������:�E������D�;�������0����� +��)������������E������� T������� +l�������z��������>����� ��k����� Q�����\������m������������������������������������������������~��������~��������������������+��$�+��%�nEF$����*����$��*����%�+��%�nF���*����%��*����$�+��$�nF��j+��$*����$��M+��%*����%��-$���*����$�+��$�nF��6*����%�+��%�nF��$*����$�+��$�nF��*����%�+��%�nF%�����*%�%���s��]��Y+��$�%j�+��%�%j���V:��$�� ��$��%�� ��%�*��=���������f������ �%�1)�<.�N2�\4�j9�p<��@��H��P��T��V��X��Z��a��c��e��g��imn�����4�������������������������������������������������������U+��T=+��U>+��t��u:*��v��w���*��v��w��Ol$��x6��y6��zY{��|:��}Y����������~��������:���`6*��v��w���`6 Kh��y6 +K h��y6 ����zY{����|��� +`66 +6��E6 +p�� + ld6 +� +��*��v��w +��� +`6 +��� +`6�����H*��v���:+��U*������d��y6+��T*������dl��y6*��v������W����������� ��z�{� +|�~���0��9��G��_��f��m��v��������������������������������������������,�B�T�����������H������0�������G������m����v������������ ���{��� +���p������O������K ��� +�< +�,�(���B� �����U��������U����P +���� +K����B����������_��������Y������M,++����W���������������������� ������������������ +����������������*+���+���M,��1*,����� *�� ���*�� ��� *��� *���� N*��+���M,��*,�����,��������� ++�����+�������� +*��*��*+�����l+���M,��`,����W*��&,�����F**���������Y,��������v���Y*������N-*��v������-�����N-��r*��v��*,��v����5�8�(�������q�������� ������������*��0��5��8��9��>��E��I��d��{���������������������������������������������������������>��9������������� �������������������������������������V*��K+��F��L�M,���N-��<���3-��>����:+���:������:����������M,��r�����K�O��������:������ �' +�-�5�=�B�I�L�O�P�T�����R��'�%��-���=������>�������9 ����P�!"����V���������V�����#�����q�$%����������f+��F��MN:*��l��*��l���:��-N����Q��-���:��>����:+���:���,�����������N-��r�����^�_��������>���!�"�*�,�0�22�>3�D4�K5�Q7�V8�]9�_;�`=�d?�����R���W�������T&����>�!'(��D�)*��`�!"����f���������f��������f���#�����q�+���,PK +������N|7���4����/���com/radinks/net/AbstractProgressMonitor$1.class������-�# +�� �� +������this$0�)Lcom/radinks/net/AbstractProgressMonitor;� Synthetic�<init>�,(Lcom/radinks/net/AbstractProgressMonitor;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�+Lcom/radinks/net/AbstractProgressMonitor$1;�actionPerformed�(Ljava/awt/event/ActionEvent;)V�e�Ljava/awt/event/ActionEvent;� +SourceFile�AbstractProgressMonitor.java� +� ���!�"��)com/radinks/net/AbstractProgressMonitor$1�java/lang/Object�java/awt/event/ActionListener�()V�'com/radinks/net/AbstractProgressMonitor�btn_cancel_actionPerformed� ���������� �������� +������4����� +*��*+������� +���������������� +������������A����� *��+������� +��� +���������������� ������� ������������� +��������PK +������N|7�tA��A��/���com/radinks/net/AbstractProgressMonitor$2.class������-�) +�� �� �� �� +��� �!�this$0�)Lcom/radinks/net/AbstractProgressMonitor;� Synthetic�<init>�,(Lcom/radinks/net/AbstractProgressMonitor;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�+Lcom/radinks/net/AbstractProgressMonitor$2;� +windowClosing�(Ljava/awt/event/WindowEvent;)V�e�Ljava/awt/event/WindowEvent;� +SourceFile�AbstractProgressMonitor.java��"�� �#�$�%�&�%�'�(�)com/radinks/net/AbstractProgressMonitor$2�java/awt/event/WindowAdapter�()V�'com/radinks/net/AbstractProgressMonitor�canContinue�Z� +forceClose� +setVisible�(Z)V� �������� �� +����������� +���4����� +*��*+����������������������� +��������� +���[�����*������*����*������������������ +������������������������������������ +��������PK +������N|7Īз�����-���com/radinks/net/AbstractProgressMonitor.class������-[ +�i�� �h���� �h�� �h�� �h�� �h���� +��� �h�� �h������ +��� �h���� +��� �h������ +��� �h���� +��� �h���� +��� �h���� +��� �h�� +���� +����� +���� +������ +��� +������ +�(�� +������ +�+�� +������ +�.�� +���� +���� +���� +��� +��� �h���� +������ +�h�� +�h�� �h�� +� + �h �h������� +��������� +�F�������B@ + + +�F +�F +������(�������� +�� �h +�� + �h +�� +�h +�h +��� + + +�! +"#$%&�dia�Ljavax/swing/JFrame;�downloadMode�Z�speed�J�elapsed�left� startTime�embedded� +s_bytesToRead�Ljava/lang/String;�bytesToRead� bytesRead� +filesToUpload� +filesUploaded� dontClose� +forceClose� cancelled� +btn_cancel�Ljavax/swing/JButton;�canContinue� +waveNumber�I� +ConstantValue���� +dateFormat�Ljava/text/SimpleDateFormat;�numberFormat�Ljava/text/NumberFormat;� +jProgressBar1�Ljavax/swing/JProgressBar;�jlb_filename�Ljavax/swing/JLabel;�jp_main�Ljavax/swing/JPanel;�rman�%Lcom/thinfile/upload/ResourceManager;�height�width�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�)Lcom/radinks/net/AbstractProgressMonitor;�()Z�setCanContinue�(Z)V�getBytesTransferred�()J�setMonitorType�(I)V�op�getBytesToRead�btn_cancel_actionPerformed�(Ljava/awt/event/ActionEvent;)V�e�Ljava/awt/event/ActionEvent;�setFilesToUpload�(J)V�setFilesUploaded�keepVisible�b�count�(J)Z�value�getFormatedSize�(J)Ljava/lang/String;�length� isVisible� +setVisible�showComplete�sb�Ljava/lang/StringBuffer;�getBriefName�'(Ljava/lang/String;I)Ljava/lang/String;�s�l�getMainPanel�()Ljavax/swing/JPanel;�isCancelled�setBytesToRead� Synthetic�initMonitor�'(Ljava/lang/String;Ljava/lang/String;)V�#(Ljava/io/File;Ljava/lang/String;)V� +SourceFile�AbstractProgressMonitor.java�����m�n���u�v�{�n�|�n�}�n�javax/swing/JButton�~����n�java/text/SimpleDateFormat�HH:mm:ss��'�����javax/swing/JProgressBar�����javax/swing/JLabel�Gathering data ...�����javax/swing/JPanel�����#com/thinfile/upload/ResourceManager�����javax/swing/JFrame�k�l()��*���GMT+,-./0�cancel1234'�)com/radinks/net/AbstractProgressMonitor$1�InnerClasses��567�)com/radinks/net/AbstractProgressMonitor$289:�java/awt/Dimension��;<=>?>@>A��B���x�p�title.downloadC'�title.upload���������w�pDEF�ExitGHI�y�p�z�pJ���java/lang/StringBufferKL��MN�mbLF�kb� �bytesO�t�nPQ���s�pR'�����download�upload����� Completed� Cancelled�exit��STU�...VWXYZ�'com/radinks/net/AbstractProgressMonitor�java/lang/Object�"com/radinks/net/NetProgressMonitor�(Ljava/lang/String;)V�java/awt/Frame�setResizable�setDefaultCloseOperation�java/util/TimeZone�getTimeZone�((Ljava/lang/String;)Ljava/util/TimeZone;�java/text/DateFormat�setTimeZone�(Ljava/util/TimeZone;)V� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�javax/swing/AbstractButton�setText�,(Lcom/radinks/net/AbstractProgressMonitor;)V�addActionListener�"(Ljava/awt/event/ActionListener;)V�java/awt/Window�addWindowListener�"(Ljava/awt/event/WindowListener;)V�(II)V�javax/swing/JComponent�setMaximumSize�(Ljava/awt/Dimension;)V�setMinimumSize�setPreferredSize�setStringPainted� +setMaximum�setTitle�java/awt/event/ActionEvent�getActionCommand�()Ljava/lang/String;�java/lang/String�equals�(Ljava/lang/Object;)Z�setValue�java/lang/Long�toString�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�java/awt/Component�java/lang/System�currentTimeMillis�setActionCommand�()I� substring�(II)Ljava/lang/String;�getContentPane�()Ljava/awt/Container;�java/awt/Container�remove�(Ljava/awt/Component;)V!�h�i��j���k�l����m�n����o�p����q�p����r�p����s�p����t�n����u�v�����w�p�����x�p����y�p����z�p����{�n����|�n����}�n����~�������n���������������������������������������������������������������������������������������*��*��*��*��*��*��*��Y�� �� +*��*��Y +����*��Y����*��Y����*��Y����*��Y����*��Y����*���� *����!*��"��#��$*�� +*��W*��W%��&��'*�� +��(Y*��)��**����+Y*��,��-*����.Y����/��0*����.Y����/��1*����.Y����/��2*����3*����4���������j�������#� �C��_��d��i��n�)�s�.�~�;���F���S���^���i���t���|���������������������������������������������������������������/�����*������������������������������������������>�����*����������� +�����������������������������n������������/�����*��5����������������������������������������������F��!*��*��*��W*��W6��&��7��*��*��W*��W8��&��7*��9��*��:������������������ +���#���9���@���E�����������F���������F����������������/�����*��;���������������������������������������i�����!*��*��+��<=��>��*��*��:������������ +�� +��� ���������!���������!����������������>�����*��?��������� +�����������������������y�p������������>�����*��@��������� +��� �!�������������������z�p������������>�����*����������� +���(�)���������������������n������������������.*��5*��; ���*��5�Ai*��;m�>��*����C*��������������1�2�4�6�!8�);����� �����������.���������.���p��������������������D���+��FY��G�Hm��J��K*��W*��WL��&��K��M��N���+��FY��G�Pm��J��K*��W*��WR��&��K��M���FY��G��J��KS��K*��W*��WT��&��K��M������������E�G�0I�8K�`O�����������������������p������������A�����*����*����U����������������U��������������������������������J��**��V��*����W*��X��Y*��*�� +%��Z�� *���� +*����*����W��*��[���������*� +��e�g�l�n�p� q�,z�:|�E��I����������J���������J���n�������������������FY��GL+*��W*���� +*��W\�� +*��W]��&��KW+��KW*����**��;��^W+_��KW*��_��`��+a��KW*��a��`*��+��M��`*�� +��FY��GS��K*��W*��Wb��&��KS��K��M��'*�� +=��Z���������6� +������.��5��<��E��L��X��_��h��s������������������������������������������������>+��c��+���FY��GN-+��d��KW-e��KW-++��cd+��c��d��KW-��M���������������� +������%��9������*���,��������>���������>���v����>����������������U�����*����*����f*����g*��V*�����������������������������������������������/�����*������������������������������������������������������������������������������(�������+������PK +������N|7 +Y|� ��� �����com/radinks/net/FileAttrs.class������-�W +��C +�D�E ��F ��G ��H ��I ��J ��K ��L�M +� +�N +� +�O ��P�Q�R�dir�Z�size�J�inode�I�GId�UId� +milli_seconds�perms�symLink�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/net/FileAttrs;� +parseFlags�(Ljava/lang/String;)Z�s�Ljava/lang/String;�isDir�()Z�getSize�()J�getMTime�getUId�()I�getGId�getMtimeString�()Ljava/lang/String;�date�Ljava/util/Date;�getFlags�setInode�(I)V�getInode�setGId�setUId�setSize�(J)V�setDir�(Z)V�setTime�seconds�getPerms� +setSymLink� isSymLink� +SourceFile�FileAttrs.java���S�T�U���������������java/util/Date��9�V�/���com/radinks/net/FileAttrs�java/lang/Object�java/lang/String�charAt�(I)C�toString�!��������������������������������������������������������3�����*���������� +����3��4��������� �!����"�#���������3*+��d������*+��l������*+��r��*�����*����*+��w��*�����*����*+��x��*�����*����*Y��x��*+��r��*�����*����*+��w��*�����*����*+��x��*�����*����*Y��x��*+��r��*�����*����*+��w��*�����*����*+ ��x��*�����*������������:����A��B�&�D�A�E�\�F�w�G���I���J���K���L���N���O�P1�R�������3� �!����3�$�%���&�'�����/�����*��������������[��������� �!����(�)�����/�����*��������������`��������� �!����*�)�����/�����*��������������i��������� �!����+�,�����/�����*��������������r��������� �!����-�,�����/�����*�� ������������{��������� �!����.�/�����I������� +Y*����L+���������� +����������������� �!�����0�1���2�,�����,��������������������������� �!����3�4�����>�����*�� +�������� +����������������� �!����������5�,�����/�����*�� +���������������������� �!����6�4�����>�����*�� �������� +����������������� �!����������7�4�����>�����*���������� +����������������� �!����������8�9�����>�����*���������� +����������������� �!����������:�;�����>�����*���������� +����������������� �!����������<�9�����>�����*���������� +����������������� �!������=����>�,�����/�����*������������������������ �!����?�;�����>�����*���������� +����������������� �!����������@�'�����/�����*������������������������ �!����A����BPK +������N|73�`&9��9��!���com/radinks/net/IRemoteFile.class������-�� +��getFilename�()Ljava/lang/String;�getAttrs�()Lcom/radinks/net/FileAttrs;�setAttrs�(Lcom/radinks/net/FileAttrs;)V�setFileName�(Ljava/lang/String;)V� +SourceFile�IRemoteFile.java�com/radinks/net/IRemoteFile�java/lang/Object�������������������� � +��������PK +������N|7��!C��C�� ���com/radinks/net/IconLoader.class������-�B +��!�" +��# +�$�% +��&�' �(�)�* +��!�+ +��, +��- +�.�/�0�1�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/net/IconLoader;�getImage�+(Ljava/lang/String;)Ljavax/swing/ImageIcon;�ico�Ljavax/swing/ImageIcon;�ex�Ljava/lang/Exception;�n�Ljava/lang/String;� +SourceFile�IconLoader.java���javax/swing/ImageIcon�2�3�4�5�6��7�java/lang/Exception�8�9�:�java/lang/StringBuffer�error loading �;�<�=�>�?�@�A�com/radinks/net/IconLoader�java/lang/Object�getClass�()Ljava/lang/Class;�java/lang/Class�getResource�"(Ljava/lang/String;)Ljava/net/URL;�(Ljava/net/URL;)V�java/lang/System�out�Ljava/io/PrintStream;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�toString�()Ljava/lang/String;�java/io/PrintStream�println�(Ljava/lang/String;)V�!���������������3�����*���������� +���� �� +��������������������������.��Y*��+����M,�M����Y�� +��+������ +�����������������������,�����*��������������.�������.��������� PK +������N|7ɋ�������(���com/radinks/net/ImgProgressMonitor.class������- +�N�z�{ +��| �M�}�~ +��z �M��� +��z �M�� �M���� +��z �M�� �M�� �M�� �M�� �M�� �N�� +������ +���� �N�� �N�� �N�� +���� +�M�� �N�� �N���� +��z�� +���� +����� +�.�� +�N�� +��� +��� +�.�� +�M�� +�I�� +��� +���� +������ +�.�� +�M�� +�N�� �N�� +�N���� �N�� �N�� +���� +���� +���� +��� +������� +�=�� +�<�� +���� �N�� �N�� +���� +���� �N���� +���� +������ ��� +���� +�I�������dim_icon�Ljava/awt/Dimension;�jp_pgbar�Ljavax/swing/JPanel;�gridBagLayout2�Ljava/awt/GridBagLayout;�jPanel1�jlb_ico�Ljavax/swing/JLabel;�gridBagLayout1�jlb_bytesToRead� +jlb_bytesRead�jp_text�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�$Lcom/radinks/net/ImgProgressMonitor;�initMonitor�#(Ljava/io/File;Ljava/lang/String;)V�src�Ljava/io/File;�dest�Ljava/lang/String;�ico�Ljavax/swing/ImageIcon;�'(Ljava/lang/String;Ljava/lang/String;)V�count�(J)Z�J�jbInit�setBytesToRead�(J)V�bytesToRead� +createIcon�+(Ljava/lang/String;)Ljavax/swing/ImageIcon;�s�img�Ljava/awt/Image;� +SourceFile�ImgProgressMonitor.java�\�]�java/awt/Dimension�\���O�P�javax/swing/JPanel�Q�R�java/awt/GridBagLayout�S�T�U�R�javax/swing/JLabel�V�W�X�T�Y�W�Z�W�[�R�����������en�������������������������o�]���n���W�java/lang/StringBuffer�upload��������� ���������������������s�t�����������������]�java/io/File�\���c�d�l�m���n�����transferred�������R�����������������������java/awt/GridBagConstraints�java/awt/Insets�\���\� +�r�n�total +�javax/swing/ImageIcon�\�"com/radinks/net/ImgProgressMonitor�'com/radinks/net/AbstractProgressMonitor�(II)V�rman�%Lcom/thinfile/upload/ResourceManager;�#com/thinfile/upload/ResourceManager�getLanguage�()Ljava/lang/String;�java/lang/String�equals�(Ljava/lang/Object;)Z�width�I�height�dia�Ljavax/swing/JFrame;�java/awt/Component�setSize� +filesUploaded�jlb_filename� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�getName�getBriefName�'(Ljava/lang/String;I)Ljava/lang/String;�toString�setText�(Ljava/lang/String;)V�getAbsolutePath�getIconWidth�()I�setIcon�(Ljavax/swing/Icon;)V�java/awt/Container�getComponentCount� removeAll� bytesRead�getFormatedSize�(J)Ljava/lang/String;�canContinue�Z�jp_main� setLayout�(Ljava/awt/LayoutManager;)V�javax/swing/JComponent�setMinimumSize�(Ljava/awt/Dimension;)V�setPreferredSize�setIconTextGap�(I)V�setHorizontalTextPosition�(IIII)V�(IIIIDDIILjava/awt/Insets;II)V�add�)(Ljava/awt/Component;Ljava/lang/Object;)V� +jProgressBar1�Ljavax/swing/JProgressBar;� +btn_cancel�Ljavax/swing/JButton;�javax/swing/JFrame�getContentPane�()Ljava/awt/Container;�*(Ljava/awt/Component;)Ljava/awt/Component;�java/awt/Window� +getToolkit�()Ljava/awt/Toolkit;�java/awt/Toolkit�createImage�$(Ljava/lang/String;)Ljava/awt/Image;�java/awt/Image�getScaledInstance�(III)Ljava/awt/Image;�(Ljava/awt/Image;)V�!�M�N��� ���O�P����Q�R����S�T����U�R����V�W����X�T����Y�W����Z�W����[�R�����\�]��^��������*��*��Y99����*��Y����*��Y�� �� +*��Y����*��Y�� +��*��Y�� ��*��Y�� +��*��Y�� +��*��Y����**�������� ,��6��*����*��*��*����*�������_���>���� �������)��4��?��J��U��`��k�'���(���*���+���,�`���������a�b����c�d��^���������q*Y�� +a��*����Y��*��W*��W ��!��"#��"*+��$��%��"��&��'*+��(��)N-��-��*��*��-��+��*����,�� +*����-�����_���"����5� +�7�?�8�H�9�T�;�_�?�i�A�p�D�`���*����q�a�b�����q�e�f����q�g�h��H�)�i�j���c�k��^���P�����*��.Y+��/,��0�����_��� +����H� +�I�`��� �����a�b������e�h�����g�h���l�m��^���z�����>*��1W*����Y��**��2��3��"#��"*��W*��W4��!��"��&��'*��5�����_�������R��S�9�T�`�������>�a�b�����>�l�n���o�]��^������� +*��6*�� +��7*����Y*��d%����8*����Y*��d%����9*��6��Y*��da����8*��6��Y*��da����9*��*����8*��*����9*����:*����Y������9*����;*����;*����;*��*����7*����Y��<����8*����Y��<����9*����Y F����8*����Y F����9*��6*����<Y��=Y��>��?��@*��*��A��@*��*��B��@*��6*����<Y +��=Y��>��?��@*��*����<Y��=Y��>��?��@*��*����<Y��=Y��>��?��@*��*����<Y��=Y��>��?��@*��*����@*��*����@*����C*��6��DW�����_���r����`��b�!�c�7�e�N�f�e�h�p�i�{�j���m���n���o���p���q���s���t���v���w�y-�|9�}E�m��������������������`������ +�a�b����p�q��^���w�����;*��E*����Y��*��3��"#��"*��W*��WF��!��"#��"��&��'�����_������������:���`�������;�a�b�����;�r�n���s�t��^���q�����'*����G+��HM,����IY,*����J��K��L������_���������������%���`��� ����'�a�b�����'�u�h����v�w���x����yPK +������N|7@�e����"���com/radinks/net/MSRemoteFile.class������-�x +��7�8 +��7 ��9 +�:�;�< +�:�= +��>�? +�:�@ +�A�B +��C�D +�E�F�G�H +��7 +��I +��J�K�L +��M +�N�O +�P�Q +��R�S +�:�T ��U�V�W�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/net/MSRemoteFile;�(Ljava/lang/String;)V�ex1�Ljava/lang/Exception;�num�Ljava/lang/String;�date�Ljava/util/Date;�ex�Ljava/text/ParseException;�s�cal�Ljava/util/Calendar;�dateTime� +dateFormat�Ljava/text/SimpleDateFormat;� +SourceFile�MSRemoteFile.java�� �com/radinks/net/FileAttrs�X�Y�Z�[�\�<DIR>�]�^�_�`�0�a�b�c�d�e�f�g�java/lang/Exception�h�i�j���java/lang/StringBuffer�k�l�m�b�java/text/SimpleDateFormat� +MM-DD-yyHH:mm��&�n�o�p�q�r�s�t�g�java/text/ParseException�u�v�w�*�com/radinks/net/MSRemoteFile�com/radinks/net/RemoteFile�attrs�Lcom/radinks/net/FileAttrs;�java/lang/String� substring�(II)Ljava/lang/String;�equals�(Ljava/lang/Object;)Z�setDir�(Z)V�trim�()Ljava/lang/String;�java/lang/Long� parseLong�(Ljava/lang/String;)J�setSize�(J)V�java/util/Calendar�getInstance�()Ljava/util/Calendar;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�toString�java/text/DateFormat�parse�$(Ljava/lang/String;)Ljava/util/Date;�java/util/Date�getTime�()J�setTime�length�()I�fileName�!����������� ��!���3�����*�������"��� +�������#��������$�%�����&��!���������*��*��Y����+������*������&+'��M,�� M*��,�� +������N���MN��Y��+ ����+ +������N��Y��:-��:*��������:*+'+���������:�H�K� +��������"���V��������%��'�*�/�3�0�7�2�:�5�H�8�K�6�L�7�M�;�Q�<�T�?�t�@��B���C���G���E���J���K�#���\� �L��'�(��3��)�*�����+�,������-�.������$�%�������/�*��Q�V�0�1��T�S�2�*���(�3�4���5����6PK +������N|7zO������(���com/radinks/net/NetProgressMonitor.class������-����initMonitor�#(Ljava/io/File;Ljava/lang/String;)V�'(Ljava/lang/String;Ljava/lang/String;)V�setMonitorType�(I)V�count�(J)Z�getBytesToRead�()J�setBytesToRead�(J)V�canContinue�()Z�setCanContinue�(Z)V� isVisible� +setVisible�getBytesTransferred�keepVisible� +SourceFile�NetProgressMonitor.java�"com/radinks/net/NetProgressMonitor�java/lang/Object��������������������� ��� +����� +��������������������������������PK +������N|7���?��?��)���com/radinks/net/ProgressMonitorImpl.class������-$ +�X���� +��� �W���� +��� �W�� �W�� �W�� �W�� �W�� �W�� �W���� +��� �W�� +�W�� �X���� +��� +�X�� +����� +����� �X���� +���� +��� �X���� �X�� +��������� +�X�� +���� +�W�� +�X�� +���� �X�� �X�� �X��������� �X�� �X�� �X�� �X���� +�3�� +������ +�X������ �X�� �X�� �X�� +������ +�>�� +���� +���� +��� +��� +�������������� +�I�� +�H�� +���� �X�� �X�� +���� �X�� +���� +���� +���� +�X�����������gridBagLayout1�Ljava/awt/GridBagLayout;�jlb_download�Ljavax/swing/JLabel;�jlb_timeElapsed�jlb_timeLeft� jlb_trans�jlb_labelTimeLeft�jlb_labelStatus�jlb_labelTimeElapsed�jPanel2�Ljavax/swing/JPanel;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�%Lcom/radinks/net/ProgressMonitorImpl;�initMonitor�'(Ljava/lang/String;Ljava/lang/String;)V�src�Ljava/lang/String;�dest�buf�Ljava/lang/StringBuffer;�setMonitorType�(I)V�op�I�#(Ljava/io/File;Ljava/lang/String;)V�Ljava/io/File;�count�(J)Z�J�txt�jbInit� +panel_size�Ljava/awt/Dimension;�setBytesToRead�(J)V�bytesToRead�showComplete� +SourceFile�ProgressMonitorImpl.java�e�f�java/awt/GridBagLayout�Y�Z�javax/swing/JLabel�[�\�]�\�^�\�_�\�`�\�a�\�b�\�javax/swing/JPanel�c�d�}�f���{�java/lang/StringBuffer��������� (����� �����of�������������{�)���\�����download�:�upload�s�t�������l�m�y�z���������{���{���{���{���{���{�����java/util/Date�e��������� ( at ��/s )� of �o�d�java/awt/Dimension�e + +�t�t�mess.elapsed� mess.left�status�java/awt/GridBagConstraints�java/awt/Insets�e�e !"# ���f��� File(s) Transferred�#com/radinks/net/ProgressMonitorImpl�'com/radinks/net/AbstractProgressMonitor� +filesUploaded�getBriefName�'(Ljava/lang/String;I)Ljava/lang/String;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�(J)Ljava/lang/StringBuffer;�rman�%Lcom/thinfile/upload/ResourceManager;�#com/thinfile/upload/ResourceManager� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�toString�()Ljava/lang/String;� +filesToUpload�jlb_filename�setText�(Ljava/lang/String;)V�java/io/File�getName�java/lang/System�currentTimeMillis�()J� startTime�elapsed� bytesRead�speed�left� +dateFormat�Ljava/text/SimpleDateFormat;�java/text/DateFormat�format�$(Ljava/util/Date;)Ljava/lang/String;�getFormatedSize�(J)Ljava/lang/String;� +s_bytesToRead�canContinue�Z�jp_main�java/awt/Container� setLayout�(Ljava/awt/LayoutManager;)V�(II)V�javax/swing/JComponent�setMaximumSize�(Ljava/awt/Dimension;)V�setPreferredSize�setHorizontalAlignment�setHorizontalTextPosition� getHeight�()I�(IIII)V�(IIIIDDIILjava/awt/Insets;II)V�add�)(Ljava/awt/Component;Ljava/lang/Object;)V� +jProgressBar1�Ljavax/swing/JProgressBar;� +btn_cancel�Ljavax/swing/JButton;� setOpaque�(Z)V�dia�Ljavax/swing/JFrame;�javax/swing/JFrame�getContentPane�()Ljava/awt/Container;�*(Ljava/awt/Component;)Ljava/awt/Component;�java/awt/Component�setSize�!�W�X��� ��Y�Z����[�\����]�\����^�\����_�\����`�\����a�\����b�\����c�d�����e�f��g���������l*��*��Y����*��Y����*��Y����*��Y���� *��Y���� +*��Y����*��Y����*��Y���� +*��Y����*�������h���2����<�������%�$�0�)�;�.�F�3�Q�8�\�:�g�=�k�>�i�������l�j�k����l�m��g���������u*Y�� +a����Y��N-*+����W-��W-*����W-��Y����*��W*��W����������W-*����W-��W*�� -����!�����h���*� +���G� +�H��I��J�%�K�.�L�Y�M�b�N�i�O�t�P�i���*����u�j�k�����u�n�o����u�p�o���c�q�r���s�t��g���������^��.*����Y��*��W*��W"����#������!��+*����Y��*��W*��W$����#������!*��%�����h�������T��U�0�W�X�Y�]�Z�i�������^�j�k�����^�u�v���l�w��g���L����� +*+��&,��'�����h��� +����]� �^�i��� ���� +�j�k����� +�n�x���� +�p�o���y�z��g��e������*��(W*��)*��*e��+*��+ ���**��,�-i*��+m��/*��/ ���**��0*��,e�-i*��/m��1��* ��1*��*��2��3Y*��+��4��5��!��Y��N-*��2��3Y*��1 ��� ��*��1��4��5��W-6��W-**��/��7��W-8��W*�� -����!*�� +��Y��**��,��7��9��*��:������!*��;�����h���B����h��i��j��l�,�o�5�p�N�s�S�x�l�{�t�|���}���~����������������i��� ������j�k�������y�{��t�w�|�r���}�f��g��������*��<*����=��>YT����?L*��<+��@*��<+��A*����B*����C*�� ��B*�� ��>Y}*�� ��D��?��A*�� +��B*�� +��C*�� +��B*�� +��C*�� +��Y��*��W*��WE����#������!*����B*����C*����Y��*��W*��WF����#������!*����B*����C*�� ��B*�� ��C*����B*����C*����Y��*��W*��WG����#������!*��<*�� ��HY��IY��J��K��L*��<*����HY +��IY��J��K��L*��<*�� +��HY��IY��J��K��L*��<*����HY +��IY��J��K��L*��*��M��L*��*��N��L*����O*��<*�� +��HY +��IY��J��K��L*��<*����HY +��IY��J��K��L*��<*����HY��IY��J��K��L*��<*�� ��HY��IY��J��K��L*��<*����HY +��IY��J��K��L*��P��Q*��<��RW*��Pw����S�����h�����&�����������!���)���1���9���A���X���`���h���p���x���������������������������������������0��X����������������������@��h���������������i��������j�k�����~���������g���]�����!*��0*��Y��*��7��������:�����h������������ ���i�������!�j�k�����!���{�����f��g���a�����+*��T*��U��!*�� ��Y��*����V������!�����h������������ +���*���i�������+�j�k����������PK +������N|7`�&N5��5�� ���com/radinks/net/RemoteFile.class������-�_ +��A ��B�C +��D��E�F +��D�G�H +�I�J +��A +��A�K��L�M +��A +��N��O ��P ��Q�R +�I�S�T�U�V�W�redMond�Z�attrs�Lcom/radinks/net/FileAttrs;�fileName�Ljava/lang/String;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/net/RemoteFile;�(Ljava/lang/String;)V�s�parse�1(Ljava/lang/String;)Lcom/radinks/net/IRemoteFile;�ex�Ljava/lang/Exception;�f�Lcom/radinks/net/IRemoteFile;� doubleDot�()Lcom/radinks/net/IRemoteFile;�at�getFilename�()Ljava/lang/String;�getAttrs�()Lcom/radinks/net/FileAttrs;� +setServerType�st� isRedmond�()Z�setAttrs�(Lcom/radinks/net/FileAttrs;)V�setFileName�<clinit>� +SourceFile�RemoteFile.java�!�"���com/radinks/net/MSRemoteFile�!�(�3�4�com/radinks/net/UnixRemoteFile�java/lang/Exception�total�X�Y�Z�..�=�(�com/radinks/net/FileAttrs�[�\�;�<�� ���MS�]�^�Windows�com/radinks/net/RemoteFile�java/lang/Object�com/radinks/net/IRemoteFile�java/lang/String� +startsWith�(Ljava/lang/String;)Z�setDir�(Z)V�indexOf�(Ljava/lang/String;)I�!������ +�������������� �����!�"��#���3�����*�������$��� +�������%��������&�'����!�(��#���=�����*�������$��� +�������%��������&�'������)� �� �*�+��#���������NL����$��Y*��L+�����$��Y*��L��M�* �� +����Y*��L+��+�������+����#�&���$���.����(��)��+��,��3�#�9�&�4�'�8�)�>�2�@�;�C�%��� ��'��,�-����N�)� ����L�.�/�� �0�1��#���������9K������Y��K����Y��K* +�����Y��L+��*+���*�����$���&� ���R��S��U��Y��[�#�\�+�]�0�^�7�_�%������7�.�/���+��2����3�4��#���/�����*�������$�������i�%��������&�'����5�6��#���/�����*�������$�������r�%��������&�'��� �7�(��#���K�����*���� +*�������������$��� +����|��}�%��������8� ��� �9�:��#����������������$����������;�<��#���>�����*+�������$��� +���������%��������&�'����������=�(��#���>�����*+�������$��� +���������%��������&�'������� ���>�"��#����������������$������� +��?����@PK +������N|7� +�l��l��%���com/radinks/net/SimpleMonitor$1.class������-�G +��# � +�$ +�%�& +�'�( +�)�* +�%�+ �,�-�.�/�0�1�2�3�this$0�Lcom/radinks/net/SimpleMonitor;� Synthetic�<init>�"(Lcom/radinks/net/SimpleMonitor;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�!Lcom/radinks/net/SimpleMonitor$1;�hyperlinkUpdate�%(Ljavax/swing/event/HyperlinkEvent;)V�e�"Ljavax/swing/event/HyperlinkEvent;�u�Ljava/net/URL;�cxt�Ljava/applet/AppletContext;� +SourceFile�SimpleMonitor.java��4� +��5�6�7�8�9�:�;�<�=�>�@�A�B�C�_blank�D�E�F�com/radinks/net/SimpleMonitor$1�java/lang/Object�#javax/swing/event/HyperlinkListener�()V� javax/swing/event/HyperlinkEvent�getURL�()Ljava/net/URL;�com/radinks/net/SimpleMonitor� +access$000�5(Lcom/radinks/net/SimpleMonitor;)Ljava/applet/Applet;�java/applet/Applet�getAppletContext�()Ljava/applet/AppletContext;�getEventType� EventType�.()Ljavax/swing/event/HyperlinkEvent$EventType;�*javax/swing/event/HyperlinkEvent$EventType� ACTIVATED�,Ljavax/swing/event/HyperlinkEvent$EventType;�java/applet/AppletContext�showDocument�#(Ljava/net/URL;Ljava/lang/String;)V� � +������ +�����������������4����� +*��*+��������������b�������� +������������������(+��M*������N-��+������-,�� �������������d��e��f��h�'�j����*����(�������(�����#������� ���!����"������ +�������,�%�?�PK +������N|71�%������#���com/radinks/net/SimpleMonitor.class������-u �b�� +�c������ +��� ������ +���� +���� +���� ���� +���� +���� +�c�� +���� ���� ���� ����������� ���� ���� ������ +����� +��� ������ +������ +��� +����������`���� +�%�� +���� �c�� +���� ���� ���� ������ ���� +������ +�0�� �b�� +������ +�4�� +���� +���� +���� +������ +�:�� +�0���� +�=�� +���� +���� �c�� ���� +���� +���� ���� ���� +���� +���� +���� +���� +���� �c�� �c�� +������ +���� +���� +���� +��������� +������ +���� +������ +������ +��� +������ +�0��applet�Ljava/applet/Applet;�pane_HTMLButton�Ljavax/swing/JEditorPane;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/net/SimpleMonitor;�count�(J)Z�J�txt�Ljava/lang/StringBuffer;�initMonitor�'(Ljava/lang/String;Ljava/lang/String;)V�src�Ljava/lang/String;�dest�jbInit� +panel_size�Ljava/awt/Dimension;�f�Ljava/awt/Font;�getBriefName�'(Ljava/lang/String;I)Ljava/lang/String;�sb�s�l�I�getFormatedSize�(J)Ljava/lang/String;�length�mb� setApplet�(Ljava/applet/Applet;)V�codebase�Ljava/net/URL;�port�link�ex�Ljava/lang/Exception;� +access$000�5(Lcom/radinks/net/SimpleMonitor;)Ljava/applet/Applet;�x0� Synthetic� +SourceFile�SimpleMonitor.java�d�e�h�i�java/text/SimpleDateFormat�mm'min' ss'sec'�h�GMT + +�o�p�q�q�q�q�q�q�java/lang/StringBuffer� <html><b> !"� mess.left#$%�</b><html>: &'�Less than a minute�java/util/Date�h()*+,-./01�q2,�;<html><b>Please wait while your upload completes</b></html>3456�i�javax/swing/JEditorPane�f�g789�java/awt/Dimension�h:;<=<>?@9�com/radinks/net/SimpleMonitor$1���InnerClasses�hABC�javax/swing/BoxLayout�hDEFGH<I4JKLMNOPQRSTUVWXYZ[\]^_`ab,c,de�Cancelfg:h��]ij�...)k�Megslmnop]�http://q'�:rs'� +/link.htmlt�java/lang/Exception�com/radinks/net/SimpleMonitor�#com/radinks/net/ProgressMonitorImpl�(Ljava/lang/String;)V�'com/radinks/net/AbstractProgressMonitor� +dateFormat�Ljava/text/SimpleDateFormat;�java/util/TimeZone�getTimeZone�((Ljava/lang/String;)Ljava/util/TimeZone;�java/text/DateFormat�setTimeZone�(Ljava/util/TimeZone;)V�java/text/NumberFormat�getInstance�()Ljava/text/NumberFormat;�numberFormat�Ljava/text/NumberFormat;�setMinimumFractionDigits�(I)V�setMaximumFractionDigits�java/lang/System�currentTimeMillis�()J� startTime�elapsed� bytesRead�speed�bytesToRead�left�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�rman�%Lcom/thinfile/upload/ResourceManager;�#com/thinfile/upload/ResourceManager� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�toString�()Ljava/lang/String;�(J)V�format�$(Ljava/util/Date;)Ljava/lang/String;�jlb_timeLeft�Ljavax/swing/JLabel;�javax/swing/JLabel�setText�canContinue�Z� +filesUploaded�jlb_filename�jp_main�Ljavax/swing/JPanel;�javax/swing/JComponent� +revalidate�javax/swing/text/JTextComponent�setEditable�(Z)V�(II)V�setPreferredSize�(Ljava/awt/Dimension;)V�setMaximumSize� setBorder�(Ljavax/swing/border/Border;)V� setOpaque�"(Lcom/radinks/net/SimpleMonitor;)V�addHyperlinkListener�((Ljavax/swing/event/HyperlinkListener;)V�(Ljava/awt/Container;I)V�java/awt/Container� setLayout�(Ljava/awt/LayoutManager;)V�setMinimumSize�jPanel2� +jProgressBar1�Ljavax/swing/JProgressBar;�add�*(Ljava/awt/Component;)Ljava/awt/Component;�javax/swing/Box�createRigidArea�*(Ljava/awt/Dimension;)Ljava/awt/Component;� +btn_cancel�Ljavax/swing/JButton;�dia�Ljavax/swing/JFrame;�javax/swing/JFrame�getContentPane�()Ljava/awt/Container;�java/awt/Component�getFont�()Ljava/awt/Font;� +java/awt/Font�getSize�()I� +deriveFont�(IF)Ljava/awt/Font;�setFont�(Ljava/awt/Font;)V� jlb_trans�jlb_timeElapsed� +setAlignmentX�(F)V�javax/swing/AbstractButton�setSize�java/lang/String� substring�(II)Ljava/lang/String;�(D)Ljava/lang/String;�java/applet/Applet�getCodeBase�()Ljava/net/URL;�java/net/URL�getPort�getHost�(I)Ljava/lang/StringBuffer;�getPath�setPage�!�b�c�����d�e�����f�g�����h�i��j���w�����5*��*��Y����*������ *�� +��*����*���� +�����k���������!��"��#�$�$�,�%�4�&�l�������5�m�n����o�p��j��4������*��W*��*��e��**���i*��m��*�� ���**��*��e�i*��m����* ����Y��Y����*��W*��W�������� ��!N*�� ���*���"��� +-$��W��'-*����%Y*�� ��� ��*����&��'��W*��(-�� ��)*��*�����k���2����0��1��4�#�5�,�6�E�9�J�<�x�>���@���D���G���H�l��� ������m�n�������o�q��x�R�r�s���t�u��j���e�����*Y��+ +a��+*��,-��)*��.��/�����k�������R� +�S��T��U�l��� �����m�n������v�w�����x�w���y�i��j��X����Z*��0Y��1��2*��2��3*��2��4Y���5��6*��2��4Y���5��7*��2��8*��2��9*��2��:Y*��;��<*��.��=Y*��.��>��?��4Y�����5L*��.+��7*��.+��@*��.+��6*��.��9*��A��=Y*��A��>��?*��A*��B��CW*��A��4Y +��5��D��CW*��A*��E��CW*��A��9*��A��4Y���5��7*��.��4Y +��5��D��CW*��.*��,��CW*��.��4Y +��5��D��CW*��.*��A��CW*��.��4Y +��5��D��CW*��.*��(��CW*��.��4Y +��5��D��CW*��.*��2��CW*��F��G*��.��CW*��.��HM*��.,,��I`���J��K*��,��K*��L��K*��(��K*��M��K*��.��N*��,��N*��L��N*��(��N*��M��N*��A��N*��2��N*��E��K*��EO��P*��B��4Y|��5��7*��B��4Y|��5��@*��B��4Y|��5��6*��B��K*��F�����Q�����k�����1���X��Z��[�&�\�9�]�A�^�I�`�X�m�k�o�y�q���r���s���t���v���w���x���y���z���{���} �~��*��6��K��W��l��x��������������������������������������������������1��D��L��Y���l��� ���Z�m�n���y��z�{�����|�}���~���j���������>+��R��+���Y��N-+��S��W-T��W-++��Rd+��R��S��W-�� �����k������������ +���������%���9���l���*���,���s����>�m�n�����>���w����>������������j���e�����#U>��Y��*����n���V��W���� �����k��� +���������l��� ����#�m�n�����#���q��� ������������j���������W+��XM,��Y��P��,��Y>��Y��Z��,��[��\����],��^��_���� :*��2��`*+����M�����R�U�a��k���������������D���M���R���V���l���>���M�������;������D����w��V����������W�m�n�����W�d�e��������j���/�����*�������k��������l����������n��������������������� +��:������PK +������N|7��i������"���com/radinks/net/SmallMonitor.class������-p +�e������ +��� ������ +���� +���� +���� ���� +���� +���� +�e�� +���� ���� ���� �e���� +����� +����� +��� +���� +��� +���� ����������� ���� ���� ���� ������ +������ +��� �e�� �e���� +�d���� ���� ���� ���� +�d���� +��� ������ ���� ���� +������ +�6�� +������ +�9�� +���� +���� +���� �e�� ���� +���� ���� +���� +���� +���� ���� +���� +���� +���� +���� +����?��� +������ +�M�� +������ +������ +������ +���� +�R�� +������ +�X�� +���� �M�� +���� +���� +���� +��������� +�����������<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/net/SmallMonitor;�count�(J)Z�J�txt�Ljava/lang/StringBuffer;�initMonitor�((ILjava/lang/String;Ljava/lang/String;)V�op�I�src�Ljava/lang/String;�dest�buf�jbInit� +panel_size�Ljava/awt/Dimension;�f�Ljava/awt/Font;�getBriefName�'(Ljava/lang/String;I)Ljava/lang/String;�sb�s�l�getFormatedSize�(J)Ljava/lang/String;�length�mb� +SourceFile�SmallMonitor.java�f�g�java/text/SimpleDateFormat�mm'min' ss'sec'�f���������GMT������� + �m�n +�o�o�java/lang/StringBuffer�Time Elapsed: �java/util/Date�f���o�o�o�o � mess.left!"#�: $%�status����� of &�w'()�o���� (*+�o�),-./0�g�javax/swing/BoxLayout�f1234�java/awt/Dimension�f5678797:.;<=>?@ABCDE=FGHIJKLMNOPQRSTUVW�java/awt/Color�fXYZ��[�javax/swing/ImageIcon\]^� +/images/x.jpg_`a�fbcd�java/awt/Insets�fefghijZk5l��Qmn�...o�Megs�com/radinks/net/SmallMonitor�#com/radinks/net/ProgressMonitorImpl�(Ljava/lang/String;)V�'com/radinks/net/AbstractProgressMonitor� +dateFormat�Ljava/text/SimpleDateFormat;�java/util/TimeZone�getTimeZone�((Ljava/lang/String;)Ljava/util/TimeZone;�java/text/DateFormat�setTimeZone�(Ljava/util/TimeZone;)V�java/text/NumberFormat�getInstance�()Ljava/text/NumberFormat;�numberFormat�Ljava/text/NumberFormat;�setMinimumFractionDigits�(I)V�setMaximumFractionDigits�java/lang/System�currentTimeMillis�()J� startTime�elapsed�jlb_timeElapsed�Ljavax/swing/JLabel;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�(J)V�format�$(Ljava/util/Date;)Ljava/lang/String;�toString�()Ljava/lang/String;�javax/swing/JLabel�setText� bytesRead�speed�bytesToRead�left�rman�%Lcom/thinfile/upload/ResourceManager;�#com/thinfile/upload/ResourceManager� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�jlb_timeLeft� jlb_trans� +s_bytesToRead�canContinue�Z� +filesUploaded�(J)Ljava/lang/StringBuffer;� +filesToUpload�jlb_filename�jp_main�Ljavax/swing/JPanel;�javax/swing/JComponent� +revalidate�(Ljava/awt/Container;I)V�java/awt/Container� setLayout�(Ljava/awt/LayoutManager;)V�(II)V�setMaximumSize�(Ljava/awt/Dimension;)V�setMinimumSize�setPreferredSize�jPanel2� +jProgressBar1�Ljavax/swing/JProgressBar;�add�)(Ljava/awt/Component;Ljava/lang/Object;)V� +btn_cancel�Ljavax/swing/JButton;� setOpaque�(Z)V�javax/swing/Box�createRigidArea�*(Ljava/awt/Dimension;)Ljava/awt/Component;�*(Ljava/awt/Component;)Ljava/awt/Component;�dia�Ljavax/swing/JFrame;�javax/swing/JFrame�getContentPane�()Ljava/awt/Container;�java/awt/Component�getFont�()Ljava/awt/Font;� +java/awt/Font�getSize�()I� +deriveFont�(IF)Ljava/awt/Font;�setFont�(Ljava/awt/Font;)V� +setAlignmentX�(F)V�(III)V� +setBackground�(Ljava/awt/Color;)V�javax/swing/AbstractButton�java/lang/Object�getClass�()Ljava/lang/Class;�java/lang/Class�getResource�"(Ljava/lang/String;)Ljava/net/URL;�(Ljava/net/URL;)V�setIcon�(Ljavax/swing/Icon;)V�(IIII)V� setMargin�(Ljava/awt/Insets;)V�blue�Ljava/awt/Color;� +setForeground�setSize�java/lang/String� substring�(II)Ljava/lang/String;�(D)Ljava/lang/String;�!�d�e�������f�g��h���w�����5*��*��Y����*������*�� �� +*�� +��*�� +�������i��������������$��,��4��j�������5�k�l����m�n��h��{����*�� +W*��*��e��*����Y����*����Y*������������**���i*��m��*�� ���**��*��e�i*��m�� ��* �� ��Y��Y��*��!W*��!W"��#��$������%N-*����Y*�� ��� ��*�� ������W*��&-����*��'��Y��*��!W*��!W(��#��$��**����)��*��*��+������*��,�����i���2����(��)��*�=�-�N�.�W�/�p�2�u�5���7���8���:�;�j��� ����k�l�����m�o����s�p�q���r�s��h���������`*Y��- +a��-��Y��:*,��.��W/��W*��-��0W*��W*��1��0W2��W*��3����*��4��5�����i���.����E� +�G��H� �I�(�J�2�K�:�L�D�M�L�O�X�P�_�Q�j���4����`�k�l�����`�t�u����`�v�w����`�x�w���M�y�q���z�g��h������ *��4��6Y*��4��7��8��9Y��p��:L*��4+��;*��4+��<*��4+��=*��>*��?��@*��>*��A��@*��>��B*��>��9Y����:��;*��4��9Y��:��C��DW*��4*��3��DW*��4��9Y��:��C��DW*��4*��>��DW*��4��9Y��:��C��DW*��4*��'��DW*��4��9Y��:��C��DW*��4*����DW*��4��9Y��:��C��DW*��4*��&��DW*��E��F*��4��DW*��4��GM*��4,,��Hd���I��J*��3��J*��'��J*��&��J*����J*��3K��L*��'K��L*��&K��L*��K��L*��A��J*��A��MY��f3��N��O*��AP��Q*��A��RY*��ST��U��V��W*��A��XY��Y��Z*��?��[��\*��?��9Y����:��;*��?��9Y����:��<*��?��9Y����:��=*��?��J*��E��s��]�����i�����*���T��V� �X�(�Y�0�Z�8�]�D�^�P�_�X�`�k�b��c���e���f���h���i���k���l���n���o�r�s"�t5�v=�wE�xM�yU�{^�|g�}p�~y���������������������������������j��� ��� �k�l��� ��{�|�"���}�~�������h���������>+��^��+���Y��N-+��_��W-`��W-++��^d+��^��_��W-�������i������������ +���������%���9���j���*���,���q����>�k�l�����>���w����>���u��������h���e�����#a>��Y��*�� +��n���b��c���������i��� +���������j��� ����#�k�l�����#���o��� ���u���������PK +������N|7b�;F~��~��$���com/radinks/net/UnixRemoteFile.class������-�� +�*�F�G +�H�I +�J�K�L �*�M +�H�N +�H�O�P +� �F �*�Q +� �R +�S�T +� �U�V +� �W +� �X +�Y�Z +� �[�\ +�H�]�^ +��F +��_ +��`�a�b +��c +�J�d +��e +�f�g +�h�i +� �j�k�l �m�n�o +�p�q +� �r�s�t�u�<init>�()V�Code�LineNumberTable�LocalVariableTable�this� Lcom/radinks/net/UnixRemoteFile;�(Ljava/lang/String;)V�ex�!Ljava/lang/NumberFormatException;� +dateFormat�Ljava/text/SimpleDateFormat;�date�Ljava/util/Date;�Ljava/lang/Exception;�i�I�j�s�Ljava/lang/String;�parts�[Ljava/lang/String;�cal�Ljava/util/Calendar;�dateTime� +SourceFile�UnixRemoteFile.java�+�,� �v�w�x�y�z�{���|�>�}�~����com/radinks/net/FileAttrs�������������������java/lang/NumberFormatException�������������������:�����java/lang/StringBuffer�������~�java/text/SimpleDateFormat�yyyy MMM dd HH:mm�+�2�������������������������MMM dd yyyy�java/lang/Exception�������unparsable data for �����2�����->�com/radinks/net/UnixRemoteFile�com/radinks/net/RemoteFile�java/lang/String�split�'(Ljava/lang/String;)[Ljava/lang/String;�java/util/Calendar�getInstance�()Ljava/util/Calendar;�fileName�trim�()Ljava/lang/String;�equals�(Ljava/lang/Object;)Z�attrs�Lcom/radinks/net/FileAttrs;� +parseFlags�(Ljava/lang/String;)Z�java/lang/Integer�parseInt�(Ljava/lang/String;)I�setInode�(I)V�setUId�setGId�java/lang/Long� parseLong�(Ljava/lang/String;)J�setSize�(J)V�indexOf�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�toString�get�(I)I�(I)Ljava/lang/StringBuffer;�java/text/DateFormat�parse�$(Ljava/lang/String;)Ljava/util/Date;�java/util/Date�getTime�()J�setTime�java/lang/System�err�Ljava/io/PrintStream;�java/io/PrintStream�println� isSymLink�()Z�!�)�*��������+�,��-���3�����*�������.��� +�������/��������0�1����+�2��-���� ��U*��+��M��N:,��� *���66,��,2�������������������� ���7���Q���o��������������������������*�� Y�� +��*��,2��W��*��,2�� +����:*������*��,2�� +����:*�����u*��,2�� +���d:*�����W*��,2�����F,`2������Y����,2������:���Y����,2����:,2����F��Y��:��Y��--W����������:��:*���� ��!��#��Y"��:��:*���� ��!���:��$��Y��%��+������&��n*,2����,2����W��P,���I*����'��,2��(���� ���*��Y��*Z������,�2��������������**�����������������������������D���#��.�����<�����!��+��,��.��3��4� �6�-�7�<�9�?�=�x�?���@���A���D���H���F���G���J���Q���U���S���T���V���Z���^���\���]���_���a���b���e�i)�j,�kD�mQ�p\�r|�t��y��z��}��������������������������������������@��C�6I��T���/���������3�4�����3�4�����3�4�\�5�5�6����7�8����5�6����7�8����3�9��#&�:�;��&#�<�;���U�0�1����U�=�>��J�?�@��F�A�B��B�C�>���D����EPK +������N|7d������ ���com/radinks/sftp/FileTable.class������-�k +��3 +��4 +��5�6 +��7 +��8�9�: +�;�< +��= +��>�? +��@ +��A +�B�C +�D�E +��F�G�H +�I�J ��K +�I�L�M�N�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�Lcom/radinks/sftp/FileTable;�editingStopped�"(Ljavax/swing/event/ChangeEvent;)V�model�!Lcom/radinks/sftp/FileTableModel;�ex� Ljava/lang/NullPointerException;�e�Ljavax/swing/event/ChangeEvent;�editingCanceled�init_ui�(I)V�col0�I�col1�col3�col2�columnModel�$Ljavax/swing/table/TableColumnModel;�cols� +SourceFile�FileTable.java���O�(�P�Q�com/radinks/sftp/FileTableModel�R�S�T�U�V�W�X�Y�Z�[�\�]���java/lang/NullPointerException�&��'�(�^�_�S�`�a�b�c�d�e�f�g�h�i�(�.�/�j�(�com/radinks/sftp/FileTable�javax/swing/JTable�setRowHeight�getModel� ()Ljavax/swing/table/TableModel;� +getEditingRow�()I� +getCellEditor�%()Ljavax/swing/table/TableCellEditor;�javax/swing/CellEditor�getCellEditorValue�()Ljava/lang/Object;�java/lang/Object�toString�()Ljava/lang/String;�rename�(ILjava/lang/String;)Z�javax/swing/JComponent�getWidth�java/lang/Math�max�(II)I�getColumnModel�&()Ljavax/swing/table/TableColumnModel;�"javax/swing/table/TableColumnModel� getColumn�"(I)Ljavax/swing/table/TableColumn;�javax/swing/table/TableColumn�setPreferredWidth�setMaxWidth�!���������������=�����*��*����������������� +���������������������������'*����M,*��*��������� W*+�� +��M�����"�%����������%��&��'�"�+�%�)�&�,����*���� �!��&���"�#����'�������'�$�%���&������T�����*+��*����M������������3��4� +�5���� ������������$�%�� +�� �!���'������4�����*�� +�������� +����<��=��������������'�(����*��������W=��>#6*����d��6*��:����������������������5*�������*�������*�����*��d����������>����H��J��K��L��M��P�$�R�0�S�<�T�I�U�V�X�Y�[�h�\�w�]���_����H���N�)�*���J�+�*���F�,�*���8�-�*��$�2�.�/��������������0�*���1����2PK +������N|7{W� +O��O��%���com/radinks/sftp/FileTableModel.class������-�� +�5�����������q �4�� �4�� �4���� +� +�� �4���� +� +���� +� +�� �4���� �4���� �4�� �4����������� +��� +���� +����� +�������������������������B@���� +� +�� �4�� +� +�� +���� �4�� +���� +�5�� +���� �4�� +������ �4���������files�[Ljava/lang/Object;� +thumbNails� +ico_folder�Ljavax/swing/ImageIcon;�ico_file�ico_up�df�Ljava/text/DateFormat;� doubleDot�Ljava/lang/String;� iDetailed�I� +ConstantValue����iBrief����iThumb���� +currentFolder�Ljava/lang/Object;�names�[Ljava/lang/String;�columnCount�viewType�redMond�Z�table�Lcom/radinks/sftp/FileTable;�cmp�(Lcom/radinks/sftp/common/BaseComparator;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�!Lcom/radinks/sftp/FileTableModel;� +iconLoader�Lcom/radinks/net/IconLoader;�getCurrentFolder�()Ljava/lang/Object;� setFolder�(Ljava/lang/Object;)V�getViewType�()I�getColumnCount�setColumnCount�(I)V� +getColumnName�(I)Ljava/lang/String;�i�isCellEditable�(II)Z�row�col�formatedSize�(J)Ljava/lang/String;�size�J�createModel�()Z� +getValueAt�(II)Ljava/lang/Object;�getPathForElement�rename�(ILjava/lang/String;)Z�sortBy�setViewType�reset�getColumnClass�(I)Ljava/lang/Class;�j� isRedmond� +setRedmond�(Z)V�redmond�getElementAt�(I)Ljava/lang/Object;�getRowCount� +getDateFormat�()Ljava/text/DateFormat;�getTable�()Lcom/radinks/sftp/FileTable;�setTable�(Lcom/radinks/sftp/FileTable;)V�removeElementAt�(I)Z� +Exceptions��� Synthetic�<clinit>� +SourceFile�FileTableModel.java�V�W�java/lang/String���name�modified�L�M�N�C�O�C�&com/radinks/sftp/common/BaseComparator�T�U�com/radinks/net/IconLoader�/images/folder-small.gif�����:�;�/images/file-small.gif�<�;�/images/up.png�=�;�J�K�java/lang/StringBuffer�����p����� b����� Kb� Mb�java/io/File�����7�8���g�������R�S�����g���W�������P�Q�������..�@�A�com/radinks/sftp/FileTableModel�$javax/swing/table/AbstractTableModel�com/radinks/sftp/SFTPListModel�java/lang/Exception�getImage�+(Ljava/lang/String;)Ljavax/swing/ImageIcon;�java/lang/Long�toString�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�()Ljava/lang/String;�setCurrentFolder�(Ljava/io/File;)V� +setSortColumn�java/util/Arrays�sort�,([Ljava/lang/Object;Ljava/util/Comparator;)V�javax/swing/JTable�setRowHeight�fireTableStructureChanged�java/lang/Object�getClass�()Ljava/lang/Class;�java/text/DateFormat�getDateTimeInstance�(II)Ljava/text/DateFormat;!�4�5��6���7�8����9�8�����:�;�����<�;�����=�;����>�?��� �@�A����B�C��D����E��F�C��D����G��H�C��D����I���J�K����L�M�����N�C����O�C����P�Q����R�S����T�U�����V�W��X���������`*��*��YSYSYSYS��**�����*�� *�� +Y������ +Y��L*+����*+����*+���������Y���*� +���f��M� �P�)�U�.�d�9�g�A�h�K�i�U�j�_�k�Z�������`�[�\���A��]�^���_�`��X���/�����*�������Y�������n�Z��������[�\����a�b��X���>�����*+�������Y��� +����r��s�Z��������[�\������J�K���c�d��X���/�����*�� �����Y��������Z��������[�\����e�d��X���/�����*�������Y���������Z��������[�\����f�g��X���>�����*�������Y��� +���������Z��������[�\������N�C���h�i��X���a�����*�� ���*����� +*��2������Y���������������������Z��������[�\������j�C���k�l��X���I��������������Y���������Z��� �����[�\������m�C�����n�C���o�p��X���������]������Y�����������������Y���!m����#�������Y���$m����&���������Y���������������'���B���Z�������]�[�\�����]�q�r��s�t���u�v���w�i���x�y����z�g��X���{�����3*����'��*��*����'��(*��)��*����**��)*����+�����Y��������� +���������'���2���Z�������3�[�\�����3�j�C���{�g��X���v�����**�� ����*��,��-*����*��*��.�����Y������������������ ���%���)���Z�������*�[�\�����*�O�C���|�W��X���+�����������Y���������Z��������[�\����}�~��X���`�����$*�� ��*����/��� +*����/����/�����Y���������Z�������$�[�\�����$��C�����t��X���/�����*��0�����Y�������Z��������[�\���������X���>�����*��0�����Y��� +�����Z��������[�\��������Q��������X���;�����*��)2�����Y������ �Z��������[�\������j�C�����d��X���;�����*��)����*��)������Y������)�Z��������[�\���������X���0�������1�����Y������.�Z��������[�\���������X���/�����*��,�����Y������2�Z��������[�\���������X���>�����*+��,�����Y��� +���6�7�Z��������[�\������R�S������������������������W��X���������2��3�����Y�������6��������PK +������N|75AZ����(���com/radinks/sftp/FileTableRenderer.class������-�D +� +�) +� +�*�+�, +��- +�.�/ +�0�1 +�.�2�3 +� �4 +�.�5�6�7�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�$Lcom/radinks/sftp/FileTableRenderer;�getTableCellRendererComponent�@(Ljavax/swing/JTable;Ljava/lang/Object;ZZII)Ljava/awt/Component;�table�Ljavax/swing/JTable;�value�Ljava/lang/Object;� +isSelected�Z�hasFocus�row�I�column�cmp�Ljava/awt/Component;�lb�Ljavax/swing/JLabel;� getHeight�()I� +SourceFile�FileTableRenderer.java�����javax/swing/JLabel�javax/swing/ImageIcon��8�9�:�;�<�=�>�?�@�java/awt/Dimension��A�B�C�"com/radinks/sftp/FileTableRenderer�*javax/swing/table/DefaultTableCellRenderer�(Ljavax/swing/Icon;)V�javax/swing/JComponent� setOpaque�(Z)V�javax/swing/JTable�getSelectionBackground�()Ljava/awt/Color;� +setBackground�(Ljava/awt/Color;)V�(II)V�setPreferredSize�(Ljava/awt/Dimension;)V�!�� +�������������3�����*���������� +����������������������������� ���B*+,��:��Y,����:��"��+������ Y�� +������������������� ��&� �/�!�?�$����\� ���B�������B������B������B������B������B������B� ����3�!�"���&�#�$���%�&�����-�����������������)��������������'����(PK +������N|7Q�@�������&���com/radinks/sftp/LocalTableModel.class������- +�I���� +������ +� +�� �I���� +������� +� +�� +� �� +� �� +��� +��� �H���� �I�� +�H�� +�I�� �I�� �I�� +���� +���� +�I�� +���� �I�� �I�� �I�� �I���� +����� +�!�� +������ +� �� +�$�� +�$���� +�(���� +���� +� �� +�(������ +� �� +�H���� +�C�� �I�� �I�� �I���� +� �� +�7�� +���� +�I�� +� �� +�I�� +� �� +���� +��������������� +�D�� +���� +�����������roots�[Ljava/lang/Object;�<init>�()V�Code�LineNumberTable�LocalVariableTable�f�Ljava/io/File;�c�C� root_list�Ljava/util/ArrayList;�this�"Lcom/radinks/sftp/LocalTableModel;�createModel�()Z� oldColumn�I� +getValueAt�(II)Ljava/lang/Object;�ico�Ljavax/swing/ImageIcon;�jlb�Ljavax/swing/JPanel;�offset�i�j�getPathForElement�(I)Ljava/lang/String;�rename�(ILjava/lang/String;)Z�row�newName�Ljava/lang/String;�removeElementAt�(II)Z�lst�Ljava/util/List;�col�removeElements�([I)Z�rows�[I�(I)Z�addFiles�(Ljava/util/List;)V�set�Ljava/util/HashSet;�getFiles�()[Ljava/lang/Object;�reset�isCellEditable�column� +SourceFile�LocalTableModel.java�M�N�os.name�������Windows���������java/util/ArrayList�java/io/File�java/lang/String�M���M�����[�������}�K�L� user.home�����Z�[�������������������������������N���]���]���L���L�javax/swing/JPanel�java/awt/BorderLayout�������javax/swing/ImageIcon���������javax/swing/JLabel�M���Center���������South�����[�^�_�..�������a���a���a�java/util/Date�����M������[���� �M + +�java/lang/Object�java/util/HashSet� com/radinks/sftp/LocalTableModel�com/radinks/sftp/FileTableModel�com/radinks/sftp/SFTPListModel�java/lang/System�getProperty�&(Ljava/lang/String;)Ljava/lang/String;�indexOf�(Ljava/lang/String;)I�redMond�Z�([C)V�(Ljava/lang/String;)V�exists�add�(Ljava/lang/Object;)Z�toArray� +currentFolder�Ljava/lang/Object;� +getDateFormat�()Ljava/text/DateFormat;�df�Ljava/text/DateFormat;�cmp�(Lcom/radinks/sftp/common/BaseComparator;�&com/radinks/sftp/common/BaseComparator� +getSortColumn�()I� +setSortColumn�(I)V�sortBy�$javax/swing/table/AbstractTableModel�fireTableDataChanged�viewType�columnCount�files� +thumbNails�java/awt/Container� setLayout�(Ljava/awt/LayoutManager;)V�getAbsolutePath�()Ljava/lang/String;�getIconWidth�(Ljavax/swing/Icon;)V�)(Ljava/awt/Component;Ljava/lang/Object;)V�getName�isDirectory�equals�ico_up� +ico_folder�ico_file�lastModified�()J�(J)V�java/text/DateFormat�format�$(Ljava/util/Date;)Ljava/lang/String;� isRedmond�length�formatedSize�(J)Ljava/lang/String;�getPath�java/util/Arrays�asList�%([Ljava/lang/Object;)Ljava/util/List;�(Ljava/util/Collection;)V�java/util/List�remove�(I)Ljava/lang/Object;�java/util/AbstractCollection�addAll�(Ljava/util/Collection;)Z�!�H�I��J����K�L�����M�N��O����������*��*����������*����Q��Y��LC=Z��8�� Y�� +Y�YUY:UY\U����N-�� +�� +-��W`�=���*+����*�� Y������*��W�����P���6� +��������"�%�*�&�3�)�S�*�Z�,�`�&�h�/�p�2���3���5�Q���*��S� +�R�S��-�;�T�U��*�F�V�W������X�Y����Z�[��O���l�����$**����*����<*��d��*��*�������P�������<��A��B��C��E�"�F�Q�������$�X�Y�����\�]���^�_��O������7*�����*��h`>*������*��2��:��v��Y�� :��!Y��"��#*��2�� :��$Y��%��&:��=��'��5��(Y��)*��+��(Y��,��-.��+*��S*��2���,��/�*��2�� N�������������������H���S���f-��$-��0��*��12��3�� +*��4��*��5�*��6�-���-��,�*����7Y-��8��9��:�*����-��0�� +*��;��/�*-��<��=������P���z����U��W��X��Z�%�[�*�]�3�^�?�`�J�a�X�b�e�g�u�h���j���k���m���o���q���v���w���z���|��������������������)��,��5���Q���R��J�S�R�S��X�E�`�a��%�{�b�c�����d�]������R�S���7�X�Y����7�e�]���7�f�]���g�h��O���Q�����*��2�� M,��>�����P��� +������ +���Q��� �����X�Y������e�]�� +��R�S���i�j��O���@����������P���������Q��� �����X�Y������k�]�����l�m���n�o��O���������K*��h`>��>*�����5��Y*����?��@:��A�W*��B���**�����C��������P���"������ ������'���0���;���G���I���Q���4��'�"�p�q����K�X�Y�����K�k�]����K�r�]�� �B�d�]���s�t��O���������R+���N+�*�����D��Y*����?��@M>+���,+.d��A�W����*,��B���**�����C��������P���&� �����������&���2���8���B���N���P���Q���*�� ��e�]���2�p�q����R�X�Y�����R�u�v���n�w��O���������?��;*�����2��Y*����?��@M,��A�W*,��B���**�����C��������P���������������%���/���;���=���Q��� ��� �p�q����?�X�Y�����?�e�]���x�y��O���������G+��E*����#��DY*����?��EM,+��FW*,��G���� +*+��B���*��W**�����C�������P���*� +���������� �(�+�5 �: +�F�Q��� ����z�{����G�X�Y�����G�R�q���|�}��O���/�����*�������P�������Q��������X�Y����~�N��O���=�����*��*��W�����P�������� +�Q��������X�Y�����o��O���@����������P�������Q��� �����X�Y������k�]�������]���������PK +������N|7L{��������$���com/radinks/sftp/SFTPListModel.class������-�%�!�"�#�iNAME_COLUMN�I� +ConstantValue����createModel�()Z� setFolder�(Ljava/lang/Object;)V�getPathForElement�(I)Ljava/lang/String;�getColumnCount�()I�setColumnCount�(I)V�getElementAt�(I)Ljava/lang/Object;�removeElementAt�(I)Z� +Exceptions�$�sortBy�rename�(ILjava/lang/String;)Z�getCurrentFolder�()Ljava/lang/Object;�reset�()V� +SourceFile�SFTPListModel.java�com/radinks/sftp/SFTPListModel�java/lang/Object�javax/swing/table/TableModel�java/lang/Exception����������������� ��� +����� +��������������������������������������������� PK +������N|7�B�2� +��� +��,���com/radinks/sftp/common/BaseComparator.class������-�� +�%�R �$�S �$�T �$�U +�V�W �$�X +�$�Y +�$�Z +�$�[ +�$�\�] +��^�����gi� +��_�`��a +�b�c �$�d +��e +��f +�g�h �i�j +��k +�g�l�m��n +��o������� +�b�p +��q������� +�b�r�s�t�u�sortColumn1�I�sortColumn2� +sortOrder2�fsv�(Ljavax/swing/filechooser/FileSystemView;� +currentFolder�Ljava/io/File;�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�(Lcom/radinks/sftp/common/BaseComparator;�getSortOrder�()I� +getSortColumn�compare�'(Ljava/lang/Object;Ljava/lang/Object;)I�o1�Ljava/lang/Object;�o2�diff�typeCompare�f1�f2�factor1�factor2�Lcom/radinks/net/IRemoteFile;�nameCompare�parent�ex�Ljava/lang/Exception;�sizeCompare�dateCompare� +setSortColumn�(I)V� +sortColumn�setCurrentFolder�(Ljava/io/File;)V� +SourceFile�BaseComparator.java�/�0�'�(�)�(�*�(�v�w�x�+�,�?�:�E�:�J�:�I�:�java/io/File�y�z�{�|�com/radinks/net/IRemoteFile�}�~����z�-�.�������|���������������|�����java/lang/Exception���|�����������������&com/radinks/sftp/common/BaseComparator�java/lang/Object�java/util/Comparator�&javax/swing/filechooser/FileSystemView�getFileSystemView�*()Ljavax/swing/filechooser/FileSystemView;�isDirectory�()Z� getParent�()Ljava/lang/String;�getAttrs�()Lcom/radinks/net/FileAttrs;�com/radinks/net/FileAttrs�isDir� +getParentFile�()Ljava/io/File;�getAbsolutePath�java/lang/String�equals�(Ljava/lang/Object;)Z�com/radinks/sftp/FileTableModel� doubleDot�Ljava/lang/String;�getName� compareTo�(Ljava/lang/String;)I�getFilename�length�()J�getSize�lastModified�getMTime�!�$�%��&���'�(����)�(����*�(�����+�,����-�.��� +��/�0��1���Y�����*��*��*��*��*���������2�������*��� ���#��+��,�3��������4�5����6�7��1���/�����*�������2�������3�3��������4�5����8�7��1���/�����*�������2�������7�3��������4�5����9�:��1���������U*���������H���������� ���*���4���>*+,��>��#*+,��>��*+,�� >��*+,�� +>���*��h�����2���.����<�$�>�+�?�.�A�5�B�8�D�?�E�B�G�I�H�L�J�N�L�3���*����U�4�5�����U�;�<����U�=�<��+�*�>�(���?�:��1��V������+����R+��N,��:-���� +��6���� +��6-���� Ą������ Ą��d�+��N,��:-���������6���������6d�����2���>����T��V��W��Y�#�Z�5�]�<�_�B�a�J�c�P�e�V�h�[�i�a�j�u�k���m�3���p���J�@�.���D�A�.��#�3�B�(��5�!�C�(��[�5�@�D��a�/�A�D��u��B�(�����C�(������4�5�������;�<������=�<���E�:��1��j������+����k+��N,��:*����H*����:��:-������������������������������-�������:�+����+��N,��:-�������������A�k��B�]�k��^�j�k���2���J����{��|��}������"���'���6���B���R���^���k���m���o���v���{�����������3���\� �"�<�F�.��m��G�H���c�@�.���]�A�.��{��@�D�����A�D������4�5�������;�<������=�<���I�:��1���������c+����>+��N,��:-������������-������d�-����e��+��N,��:-����������e������2���&� ��������������)���6���B���G���M���3���H���6�@�.���0�A�.��G��@�D��M��A�D����c�4�5�����c�;�<����c�=�<���J�:��1���������G+����+��N,��:-�� �� e�!m��+��N,��:-�����#�����#e�!m������2������������������"���'���-���3���H����@�.����A�.��'� �@�D��-��A�D����G�4�5�����G�;�<����G�=�<���K�L��1���X�����*���� +**��h��*�������2������������������3��������4�5������M�(���N�O��1���>�����*+�������2��� +���������3��������4�5������-�.���P����QPK +������N|7YwKG��G��)���com/thinfile/upload/ResourceManager.class������-� +��� ����� +������ +���� +� +�� +� � � + + +�� +� + +��messages�Ljava/util/ResourceBundle;� +currentLocale�Ljava/util/Locale;�TITLE_UPLOAD�Ljava/lang/String;� +ConstantValue�TITLE_DOWNLOAD� +ERR_NO_UPLOAD�ERR_NO_PERM� ERR_NO_MV�ERR_NO_MKDIR� +ERR_NO_LMKDIR� +ERR_NO_LCD�ERR_NO_LOGIN�ERR_NO_CONNECT�ERR_GENERIC1�ERR_GENERIC2�ERR_LOST� +ERR_CLOSED�ERR_NO_CHMOD �TITLE_ERR_NO_DOWNLOAD!� +MESS_SCALE"� MESS_GZIP#�MESS_PROCESSED$�MESS_NON_STANDARD%�MESS_DEFAULT_PORT&�MESS_PROMPT_DEL'�MESS_PROMPT_RMDIR(�MESS_PROMPT_OVER)�MESS_PROMPT_PASS*�MESS_DATE_FORMAT+�MESS_REMOTE_PROP,� MESS_SURE-�MESS_CONFIRM_DEL.�MESS_CONFIRM_RMDIR/� +MESS_CHGRP0� +MESS_MKDIR1� +MESS_CONNECT12� MESS_WAIT3�MESS_MV4�MESS_RO5� MESS_LEFT6�MESS_ELAPSED7� +MESS_KEY_PASS8� +MESS_DOWNLOAD9�MESS_UPLOAD:�SHORT;�MEDIUM<�LONG=�EXISTS>�DISPLAY?�DIALOGS@�BEHAVEA�CONNECTIONSB�ERR�CLOSEC�DOWNLOADD�UPLOADE�STATUSF�CDG�LISTH�DETAILSI�REFRESHJ�SETTINGSK�CONFIRML�RENAMEM�DELETEN�PERMSO�PROPSP�CONNECTQ� +DISCONNECTR�HOSTS�USERT�PASSU�READV�WRITEW�EXECX�OWNERY�GROUPZ�OTHERS[�WARN\�EXIT]�NAME^�MOD_�TOTAL`�BYTESa�SIZEb�TRANSc�SRCd�DESTe�LASTMODf�FLAGSg�FILEh�YESi�NOj�OFk�OVERl�RESUMEm�CANCELn�PASTEo�BROWSEp�HIDDENq�MKDIRr�RMDIRs�MBt�KBu�allPurposeError�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�%Lcom/thinfile/upload/ResourceManager;�getCurrentLocale�()Ljava/util/Locale;� +getMessage�&(Ljava/lang/String;)Ljava/lang/String;�key�showGenericError�getLanguage�()Ljava/lang/String;�<clinit>� +SourceFile�ResourceManager.java�������res.messagesvwx�java/lang/StringBuffer�<html>yz�err.generic2{���</html>|��������err}~��������java/util/Locale�dk�DK����#com/thinfile/upload/ResourceManager�java/lang/Object�title.upload�title.download�err.noUpload� +err.noPerm�err.noMv�err.noMkdir�err.noLmkdir� err.noLcd�err.noLogin� +err.noConnect�err.generic1�err.lost� +err.closed�err.noChmod�title.err.noDownload� +mess.scale� mess.gzip�mess.proced�mess.nonStandardPort�mess.defaultPort�mess.promptDelete�mess.promptRmdir�mess.promptOver�mess.promptPass�mess.dateFormat�mess.remoteProp� mess.sure�mess.confirmDel�mess.confirmRmdir� +mess.chgrp� +mess.mkdir� +mess.connect1� mess.wait�mess.mv�mess.ro� mess.left�mess.elapsed�mess.keyPass� +mess.download�mess.upload�short�med�long�exists�display�dialogs�behave�connections�close�download�upload�status�cd�list�details�refresh�setings�confirm�rename�delete�perms�props�connect� +disconnect�host�user�pass�read�write�exec�owner�group�others�warn�exit�name�mod�total�bytes�size�transferred�src�dest�lastmod�flags�file�yes�no�of�over�resume�cancel�paste�browse�hidden�mkdir�rmdir�mb�kb�java/util/ResourceBundle� getBundle�.(Ljava/lang/String;)Ljava/util/ResourceBundle;�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;� getString�toString�javax/swing/JOptionPane�showMessageDialog�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)V� getLocale�'(Ljava/lang/String;Ljava/lang/String;)V�!�����h������ +������������� ��!�������"��#�������$��%�������&��'�������(��)�������*��+�������,��-�������.��/�������0��1�������2��3�������4��5������� ��6�������7��8�������9��:�������;��<�������=��>�������?��@�������A��B�������C��D�������E��F�������G��H�������I��J�������K��L�������M��N�������O��P�������Q��R�������S��T�������U��V�������W��X�������Y��Z�������[��\�������]��^�������_��`�������a��b�������c��d�������e��f�������g��h�������i��j�������k��l�������m��n�������o��p�������q��r�������s��t�������u��v�������w��x�������y��z�������{��|�������}��~��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� +�����������������o�����5*������-������Y������ �� +�������� +�������������� +��4���������5������� ������������������������������� ����������2�������*�� +��������������������������� ����������-�������� +���� +����������� +���)�+�����������4����� +������������������/��������� +�����������������/����������Y������������� +��������������PK +������N|7�`������&���com/thinfile/upload/ThinApplet$1.class������-�# +�� �� +������this$0� Lcom/thinfile/upload/ThinApplet;� Synthetic�<init>�#(Lcom/thinfile/upload/ThinApplet;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�"Lcom/thinfile/upload/ThinApplet$1;�actionPerformed�(Ljava/awt/event/ActionEvent;)V�e�Ljava/awt/event/ActionEvent;� +SourceFile�ThinApplet.java� +� ���!�"� � com/thinfile/upload/ThinApplet$1�java/lang/Object�java/awt/event/ActionListener�()V�com/thinfile/upload/ThinApplet�show_browseDialog� ���������� �������� +������4����� +*��*+������� +�������K�������� +������������@�����*��������� +��� +����M��N���������������������������� +��������PK +������N|7��E��E��&���com/thinfile/upload/ThinApplet$2.class������-� +�� ������this$0� Lcom/thinfile/upload/ThinApplet;� Synthetic�<init>�#(Lcom/thinfile/upload/ThinApplet;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�"Lcom/thinfile/upload/ThinApplet$2;�run�()Ljava/lang/Object;� +SourceFile�ThinApplet.java� ���� com/thinfile/upload/ThinApplet$2�java/lang/Object�java/security/PrivilegedAction�()V� ������������������ � +�����4����� +*��*+�������������w� +������� +������������,����������������~� +��������������������� +��������PK +������N|7���dI��I��5���com/thinfile/upload/ThinApplet$DNDMouseListener.class������-�Q +��) ��* +�+�, +��- +��. +�/�0�1 +�2�3 +�2�4 +��5 �6�7 �6�8 +�6�9�:�;�<�this$0� Lcom/thinfile/upload/ThinApplet;� Synthetic�<init>�#(Lcom/thinfile/upload/ThinApplet;)V�Code�LineNumberTable�LocalVariableTable�this�DNDMouseListener�InnerClasses�1Lcom/thinfile/upload/ThinApplet$DNDMouseListener;�mouseClicked�(Ljava/awt/event/MouseEvent;)V�e�Ljava/awt/event/MouseEvent;� modifiers�I�mousePressed� +mouseReleased�mouseEntered�mouseExited� +SourceFile�ThinApplet.java��=���>�?�@�A�B�C�=�D�E�F�java/awt/Component�G�H�@�I�@�J�K�L�M�N�O�N�P�=�/com/thinfile/upload/ThinApplet$DNDMouseListener�javax/swing/JPopupMenu�java/awt/event/MouseListener�()V�java/awt/event/InputEvent�getModifiers�()I� isVisible�()Z�pack�java/util/EventObject� getSource�()Ljava/lang/Object;�java/awt/event/MouseEvent�getX�getY�show�(Ljava/awt/Component;II)V�com/thinfile/upload/ThinApplet�handled�Z� browsable�show_browseDialog�!�����������������������8����� +*��*+���������� +����� ��������� +������������������b+��=+W~+W��$*����M*��*+����+��+�� �� +��3*������!*������+W~+W�� +*���� +*������������*� +�������1�E�R�Y�a���� ����b�������b�� ���]�!�"���#������5�����������������"����������������� ���$������5�����������������&����������������� ���%������5�����������������*����������������� ���&������5�����������������.����������������� ���'����(���� +���6��PK +������N|7��%��'���'��$���com/thinfile/upload/ThinApplet.class������-* +�� �� �� �� �� �� +� + +� + +� + �� ��!" +�# ��$% +�# ��&' +� ��() +� ��*+ ��,- +�! ��. ��/ ��0 +12 34 +56 +��7 +��89: +�;< +��= +>?@ +�1 +��A +BC +�1DE ��FG +�HI +JK ��L +MN +MOP +�? +BQ +MRS +BTUV +WXYZ[\ +M]^_`ab +Mcd +��ef +Wghihjkl +mno +�\p +�^ ��q +�\r +�\st +�\u +�\v +�\w +Bxy +Mz{ +�Y| +}~ +}�� +1� +�w� +�w�� +� +� +�w��� +�w� +�w� +�� +1= +�\� +�\�� +�~ +�~� +�\� +�~�� +��� +�� +M� +�� +�� �� +��� +������ +��� +��������� +1����� +1� +�1� +�1~ +�� +M� +M�� +��# +������DNDMouseListener�InnerClasses�version�Ljava/lang/String;�copyMess�chooserPreview�Lcom/radinks/dnd/ImagePreview;�dnd�Lcom/radinks/dnd/DND;�chooser�Ljavax/swing/JFileChooser;� +permDenied�Z�site�dropMessage�uploadLocation� mlistener�1Lcom/thinfile/upload/ThinApplet$DNDMouseListener;�browseListener�Ljava/awt/event/ActionListener;�props�Ljava/util/Properties;�rman�%Lcom/thinfile/upload/ResourceManager;� +propsFileName� +btn_browse�Ljavax/swing/JButton;�pane�Ljavax/swing/JComponent;�handled� browsable�<init>�()V�Code�LineNumberTable�LocalVariableTable�this� Lcom/thinfile/upload/ThinApplet;�init�textArea�Ljavax/swing/JEditorPane;�ex�Ljava/io/IOException;�mes�myurl�s_trans�uplimit� +s_fullPath� s_ftpMode�concatToURL�()Ljava/lang/String;�nm�en�Ljava/util/Enumeration;�Ljava/lang/Exception;� +makeBrowsable�btxt� loadProps�codebase�Ljava/net/URL;�port�I�base�location�fileUrl�getParameter�&(Ljava/lang/String;)Ljava/lang/String;�name�param�show_browseDialog�i�file�Ljava/io/File;�sel�f�[Ljava/io/File;�lst�Ljava/util/ArrayList;�hyperlinkUpdate�%(Ljavax/swing/event/HyperlinkEvent;)V�sub_item�Ljava/lang/Object;�attr�Ljavax/swing/text/AttributeSet;�enum2�item�elm�AbstractElement�3Ljavax/swing/text/AbstractDocument$AbstractElement;�iter�s�target�e�"Ljavax/swing/event/HyperlinkEvent;�u�start�pane2�getDefaultLocation�getBrowseButton�()Ljavax/swing/JButton;�getResponse�getUploadStatus�()I�jsAddTextField�'(Ljava/lang/String;Ljava/lang/String;)V�value� +SourceFile�ThinApplet.java�����������Thin File (Pvt) Ltd.�������������www.thinfile.com/�����java/lang/StringBuffer�http://���demo/initdemo.php��������demo/upload.php�����/com/thinfile/upload/ThinApplet$DNDMouseListener�������� com/thinfile/upload/ThinApplet$1�����java/util/Properties�����#com/thinfile/upload/ResourceManager�����thinupload.properties�����javax/swing/JButton��������������������������������ThinApplet url = �url����permission_denied��������javax/swing/JEditorPane��������java/io/IOException����� +err.noPerm����Error�������������java/awt/BorderLayout�����Center���message�style����user_id� ?user_id=�URL = �chap��� +max_upload� full_path�translate_path�encode_path�ftp_mode���browse�����extra_header��������java/lang/String�java/lang/Exception�����javax/swing/JFileChooser�com/radinks/dnd/ImagePreview���������upload��������� +browse_button���browse_text��������South� +props_file�������:������/�java/net/URL������java/util/ArrayList�� �java/awt/Cursor��� + +��1javax/swing/text/AbstractDocument$AbstractElement��a�A�javax/swing/text/AttributeSet�TARGET !"#$#%���%&�� �� +� com/thinfile/upload/ThinApplet$2'()�com/thinfile/upload/ThinApplet�javax/swing/JApplet�#javax/swing/event/HyperlinkListener�append�,(Ljava/lang/String;)Ljava/lang/StringBuffer;�toString�#(Lcom/thinfile/upload/ThinApplet;)V�java/applet/Applet�java/lang/System�out�Ljava/io/PrintStream;�java/io/PrintStream�println�(Ljava/lang/String;)V�getProperty�com/radinks/dnd/util/CommonUtil�isWebUrl�(Ljava/lang/String;)Z�getContentPane�()Ljava/awt/Container;�java/awt/Container�add�*(Ljava/awt/Component;)Ljava/awt/Component;�setPage� +getMessage�javax/swing/JOptionPane�showMessageDialog�<(Ljava/awt/Component;Ljava/lang/Object;Ljava/lang/String;I)V�com/radinks/dnd/DND� setApplet� +setJpopupMenu�(Ljavax/swing/JPopupMenu;)V� setLayout�(Ljava/awt/LayoutManager;)V� getScroll�()Ljavax/swing/JScrollPane;�)(Ljava/awt/Component;Ljava/lang/Object;)V�java/util/Hashtable�put�8(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;�setAuth�setProps�(Ljava/util/Properties;)V�elements�()Ljava/util/Enumeration;�java/util/Enumeration�hasMoreElements�()Z�nextElement�()Ljava/lang/Object;�java/lang/Throwable�printStackTrace�setMultiSelectionEnabled�(Z)V�setAcceptAllFileFilterUsed�setDialogTitle�setFileSelectionMode�(I)V�setAccessory�(Ljavax/swing/JComponent;)V�addPropertyChangeListener�&(Ljava/beans/PropertyChangeListener;)V�isPropertyEnabled�equals�(Ljava/lang/Object;)Z�javax/swing/AbstractButton�setText�addActionListener�"(Ljava/awt/event/ActionListener;)V�getCodeBase�()Ljava/net/URL;�getPort�getHost�(I)Ljava/lang/StringBuffer;�getPath� +openStream�()Ljava/io/InputStream;�load�(Ljava/io/InputStream;)V� +showDialog�)(Ljava/awt/Component;Ljava/lang/String;)I�getSelectedFiles�()[Ljava/io/File;�getSelectedFile�()Ljava/io/File;�size�java/awt/Component� setCursor�(Ljava/awt/Cursor;)V�prepare_upload�(Ljava/util/List;)V� javax/swing/event/HyperlinkEvent�getURL�getEventType� EventType�.()Ljavax/swing/event/HyperlinkEvent$EventType;�*javax/swing/event/HyperlinkEvent$EventType� ACTIVATED�,Ljavax/swing/event/HyperlinkEvent$EventType;�getSourceElement�()Ljavax/swing/text/Element;�!javax/swing/text/AbstractDocument� +getAttributes�!()Ljavax/swing/text/AttributeSet;�getAttributeNames�java/lang/Object�getAttribute�&(Ljava/lang/Object;)Ljava/lang/Object;�getAppletContext�()Ljava/applet/AppletContext;�java/applet/AppletContext�showDocument�#(Ljava/net/URL;Ljava/lang/String;)V�(Ljava/net/URL;)V�repaint�java/security/AccessController�doPrivileged�4(Ljava/security/PrivilegedAction;)Ljava/lang/Object;�!���������������������������������������������������������������������������������������������������������������������������������������������������������*��*��*��*��*��*�� *�� +Y���� +*�� �� +�� +����*�� +Y���� +*�� �� +�� +����*��Y*����*��Y*����*��Y����*��Y����*�� *��!Y��"��#*��$*��%���������F������� +���-��2��5� �:�?�?�^�D�j�I�v�T���Y���a���f���p���u����������������������������������S*��&��'*����(��'*����(��'�� +Y���� +*�� �� +����(*��)*��*W��'�� +Y��+�� +*��,��-�� +����(*����F*.��/L+��"+��0����1Y��2M*��3,��4W,+��5�M*��7*��W*��W8��9:��;*��<*��=*��<*����>*��3��?Y��@��A*��3*��<��BC��D*E��/�� +**E��/��*F��/��*��F*F��/��GW*H��/��*��H*H��/��GW*,��/��Q�� +Y��*,��/�� +I�� +*H��/�� +��L*��,+��GW��'�� +Y��J�� +*��,��-�� +����(*��<*K��/��L*M��/L+��*��M+��GW*N��/M,��$*��N,��GW*O��/N-��*��O-��GW*P��/M,��*��P,��GW*Q��/N-��*��Q-��GW*��<*��=*��<*����R*��<*����>*��3��?Y��@��A*��3*��<��BC��D*S��/��*��T*U��/��*��U*U��/��GW���w�����6��������8���z��|��}��~�4���8���=���^���e���l���w�����������������������������������������������������������'��I��T��u�������������������������������������������������,5 +9BR�����\� �����������������l�<�����I�,��������������S������������������������r����������������������)*����VL+��W���+��X���YM����L+��[������!�Z������"���%�&�'�)�-�!+�",�&.�����*�����������������"���������)����������������O������*����*��\Y��]��*��^Y��_��`*����a*����b*��*��W*��Wc��9��d*����e*��*��`��f*��*��`��g*��<h��i��S*j��/L+��+��k��*��#+��l��*��#*��W*��WS��9��l*��#*����m*��3*��#n��D��*��<S��i��*��%���������R���:�<�>�?�%@�-C�CE�KF�VG�aI�mK�tL��N��S��V��W��X��Y��[��_�������t�F�������������������������������*o��/L+��+��k��^*��pM,��q��P��,��q>�� +Y���� +,��r�� +s�� +��t,��u�� +��:�� +Y���� +v�� +*�� �� +��L��wY+��xM*��,��y��z��L���������Z������.���n�o�q�r�+s�St�ow�xz�����|��������H���V������+�D������S��������|������x������������������������������������f�����*+��{M,��*����*��+��-�,������������������������ �����������������������������������'������*��*��7*��W*��Wc��9��|<���*����}M��~Y��N,��$,���6,���-,2���W�����*�����:�� +-���W-�����*���Y������*��<-���*������������F��������� ��(��0��9��C��L��U��^��c��j��q��}������������>��<�������^������������������p������(�c������0�[����������������������+���M+���������+���N:-������-���:�������:��W���|��X�:������k��������k��V������:����: ��W���7 ��X�: + +������k�� +������k�� +�������:��ŧ����*���,������ +*���,�������������Z���������������$��0��:��C��]��i��r��|������������������������������p����(����� +�i�G������r�>����� �C�m������$��������0����������������������������������������������������������D*����?*���*��7��1��-*��7��1L+��wY*����x�����M+*�����*��7���*�������,�/�Z������.���4�6�8�:�>�,D�/@�0C�8F�?H�CJ����� ��0��������"������D���������������/�����*��������������T����������������������/�����*��#������������Y���������������� ��������A�����*��<������� +*��<���������������f���������������� +������2�����*��<���������������k���������������� +������O����� +���Y*������W��������� +���u������� ���� +��������� +�������� +������������*������������������������������PK +������N|7���7��7��'���com/thinfile/upload/ThinImageDemo.class������-�/ +� +�� �� +�� �� +�� �� +��� �!�<init>�()V�Code�LineNumberTable�LocalVariableTable�this�#Lcom/thinfile/upload/ThinImageDemo;�init� +SourceFile�ThinImageDemo.java���$Thin Image Upload. Demo Version 1.04�"�#�$���%�&�'�(�)�*�+�,�-�.�!com/thinfile/upload/ThinImageDemo�#com/thinfile/upload/ThinImageUpload�com/thinfile/upload/ThinApplet�version�Ljava/lang/String;�props�Ljava/util/Properties;�com/radinks/dnd/util/DemoUtil�lockDown�.(Ljava/util/Properties;Ljavax/swing/JApplet;)V�dnd�Lcom/radinks/dnd/DND;�com/radinks/dnd/DND�setProps�(Ljava/util/Properties;)V�!� � +���������� +���/�����*������������������������������� +���X�����*��*��*��*��*��*���������������� �� +� +����� +������������������PK +������N|7��V������+���com/thinfile/upload/ThinImageUpload$1.class������-�Q +��& ��'�( +��& �)�* +�+�,�- +��& �)�. +�+�/�0 �)�1 �)�2 +�3�4�5 �)�6�7�8�9�this$0�%Lcom/thinfile/upload/ThinImageUpload;� Synthetic�<init>�((Lcom/thinfile/upload/ThinImageUpload;)V�Code�LineNumberTable�LocalVariableTable�this���InnerClasses�'Lcom/thinfile/upload/ThinImageUpload$1;�run�()Ljava/lang/Object;�e�Ljava/lang/Exception;� +SourceFile�ThinImageUpload.java��:���com/radinks/dnd/DNDPlus�;�<�=�>�?�@�javax/swing/JFileChooser�A�B�C�D�javax/swing/JEditorPane�E�F�G�J�K�L�M�java/lang/Exception�N�O�%com/thinfile/upload/ThinImageUpload$1�java/lang/Object�java/security/PrivilegedAction�()V�com/thinfile/upload/ThinApplet�dnd�Lcom/radinks/dnd/DND;�com/radinks/dnd/DND�setSig�(I)V�chooser�Ljavax/swing/JFileChooser;�getTextArea�()Ljavax/swing/JComponent;�pane�Ljavax/swing/JComponent;� mlistener�P�DNDMouseListener�1Lcom/thinfile/upload/ThinApplet$DNDMouseListener;�java/awt/Component�addMouseListener�!(Ljava/awt/event/MouseListener;)V� +permDenied�Z�/com/thinfile/upload/ThinApplet$DNDMouseListener� ������������������������4����� +*��*+���������������������� +������ �!�����������c*����Y����*����*����Wf��*����Y���� *��*������ +����*����*���� +����L*���������U�X������&� ���!��"�"�#�0�$�D�%�U�/�X�&�Y�'�a�0������Y��"�#����c������$����%�������������H�)�I�PK +������N|75�EI������)���com/thinfile/upload/ThinImageUpload.class������-�# +��� ��� +�� +�����<init>�()V�Code�LineNumberTable�LocalVariableTable�this�%Lcom/thinfile/upload/ThinImageUpload;� +SourceFile�ThinImageUpload.java� � +�Thin Image Upload. Version 1.04���%com/thinfile/upload/ThinImageUpload$1���InnerClasses� �� �!�"�#com/thinfile/upload/ThinImageUpload�com/thinfile/upload/ThinApplet�version�Ljava/lang/String;�((Lcom/thinfile/upload/ThinImageUpload;)V�java/security/AccessController�doPrivileged�4(Ljava/security/PrivilegedAction;)Ljava/lang/Object;�!��������� � +�����M�����*��*����Y*����W��������������� +���3� +��������������������� +��������PK +������N|7�ֻ+��+�����images/file-small.gifGIF89a����������������լ����������ۊ��������������������������������}��������������������������������������Ō�������������������������������������������������������������DZ����������������������������������������ϭ�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!���F�,���������F�����:#$;##"!D�3%��8�4 +� +E������*'@7�����&))01-��2,0..(./?ą<Ș9�� 6��+">�C=�=4"A�@B�2Bj�0D�` �;PK +������N|7 ���������images/folder-small.gifGIF89a���������ǿ���������������˿��������ǔ�ϖ�Ֆ�Җ������̲�ӳ���Ċڴ������簦����؞�՜�Γ�ʒ�Ӛ�ϕ�ȏ���Ψm�������������֠�Θ�Θ�˕�ƍ�~ծsЮyѴ�ҷ�ҷ�ѹ�ʯ�Ľ�����Ñ�ְqΫuˮ{αؼ��ۼ�ذ�Ѡ�Н�˓ױ�������ݷ�ɥfϳ�����צ�ա�˔�Ǝ�Î����Ə��e������ͬʩy���њ�ɑ�Ƒ�Î������翋���漅��v���ũ�Ͱ��Ϝ�Í���迌徊佉仇⹅Ӫr������ȯ�ܿ��Ð澋潉仈Ṅ�ڲ}ٯw_�����ͬ罈伇⺅߷�۳}֮wѨpȝd��O�qBľ���ܻ���˩�ݵܳyǞe��a��\��[��o�����������ַ�ěd��\�qT��������藒����Ž�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!�����,���������� H��@� ���&P��A D�0�B/`Ƞa�<|�B�%L�@�B� +-\��C�5�ٸ�#��<z��$��!D�1rI%K�4q�J)S�Q�b� +�,Z�p����0Ō!S�̙/hҨYæ��o�đe�:v��ɣg��|���(��A� +:�H`"E�5r�R$I�(Uh��L�6q�l�O�B��ͻ�o��;PK +������N|7[%��>��>�����images/nopreview.gifGIF89aZ�Z���������!�Created with The GIMP�!� +��,����Z�Z�����������ڋ����H�扦�ʶ���L�������� +�Ģ�L*�̦� �J�Ԫ���j�ܮ������N��춻 +� �':,>���||B��h�G��G�g��(�����iI)(i �Y�99�W9*j8h������j�9���z��K�`��Q��z�x�[8�Ll��-=}� +�黽d��l˪|���̋���JΎ~�^r.��ȼ.*/�9�ߺ�ݾy���x�@���S���9c�Y�Q��;PK +������N|7�!�h��h�� +���images/up.png�PNG + +��� +IHDR�����������a���gAMA����|�Q���� cHRM��z%��������������u0���`��:���o�������IDATx�b���?%� ��(� +�D��Ā�B���9��@ +��������Q���ya>�����Bb� �H8d���ug� �c�k`��k���&���!���)��� +�w��������7�[~�_�f����@C@�%� + d��ny�S�jR�JN<f8��3×���N302��������g��^�*�n��S6Xsb�=C̎��?���à���P����?�����O������� +��301���_�.����o��6������Ѷ]���k�rhX ��.�������)X.���,L���{����>�� � +r:+�߁�2_bF���0;<l�9���`�ǁ�T�/@����$���/�~gx��L�/T�{��@��LH�/>ep��a���7ß�_��?�U@��`��8?�L,�������U\�������⠴o��%A�G����ǰ-�ê����IEND�B`�PK +������N|7�r���������images/x.jpg�����JFIF��`�`�����Exif��II*�������������C� + + $.' ",#(7),01444'9=82<.342���C + +2!!22222222222222222222222222222222222222222222222222�����"�������������� +�������}�!1AQa"q2���#B��R��$3br� +%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz����������������������������������������������������������������������������������� +������w�!1AQaq"2�B���� #3R�br� +$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������������?��u��hR�H�~� +�H�6��7�<�qouc/�Σ4�UI�[���nj}ènDs4�7.���sڰ`aU�2'��劗3l�+N����Y�ݖ�~��PK +������N|7*t8I��I�����res/messages.propertiescancel=Cancel +exit=Exit + +bytes=bytes + +upload=Upload + +download=Download + +total=total + +err.generic2=The files or folders you have chosen cannot be uploaded + + +title.upload=Upload in Progress + +title.download=Download in Progress + + +paste=Paste + +err.noUpload=Upload Failed + +status=Status + +mess.scale=Trying to scale images +mess.wait=Please Wait +mess.proced=Files processed +mess.gzip=Trying to compress files +mess.left=Time Left +mess.elapsed=Time Elapsed + +browse=Browse + +mb=MB + +kb=KB + +transferred=transferred + +image=image + +err.noPerm=Permission to upload files denied, cannot continue + +of=of +PK +������N|7HɌ}��}�����res/messages_ca.properties# Sample ResourceBundle properties file +cancel=Cancel +exit=Exit + +bytes=bytes + +upload=Pujant + +download=Download + +total=total + +err.generic2=The files or folders you have chosen cannot be uploaded + +mess.scale=Intentant escalar les imatges + +title.upload=Enviament en curs + +title.download=Download in Progress + +mess.wait=esperi si us plau + +mess.proced=archius procesats + +mess.gzip=Trying Compress Files + +paste=Pegar + +err.noUpload=Upload Failed + +status=Status + +mess.left=Time Left +browse=Browse +mb=MB + +kb=KB + +transferred=transferred + +image=image + +mess.elapsed=Time Elapsed + +err.noPerm=Permission to upload files denied, cannot continue + +of=of +PK +������N|7X��s��s�����res/messages_dk.propertiescancel=Afbryd +exit=Afslut + +bytes=bytes + +upload=Upload + +download=Download + +total=total + +err.generic2=De filer eller foldere du har valgt kan ikke uploades + + +title.upload=Upload igang + +title.download=Download igang + + +paste=Inds�t + +err.noUpload=Upload fejlede + +status=Status + +mess.scale=Pr�ver at skalere billeder +mess.wait=Vent venligst +mess.proced=Processerede filer +mess.gzip=Fors�ger at komprimere filer +mess.left=Tid tilbage +mess.elapsed=Tid brugt + +browse=Gennemse + +mb=MB + +kb=KB + +transferred=overf�rt + +image=billede + +err.noPerm=Fil upload ikke tilladt - kan ikke forts�tte + +of=af +PK +������N|7ɭ�܁��������res/messages_es.properties# Sample ResourceBundle properties file +cancel=Cancel +exit=Exit + +bytes=bytes + +upload=Enviando + +download=Download + +total=total + +err.generic2=The files or folders you have chosen cannot be uploaded + +mess.scale=Intentando escalar las imagenes + +title.upload=Envio en proceso + +title.download=Download in Progress + +mess.wait=por favor espere + +mess.proced=archivos procesados + +mess.gzip=Trying Compress Files + +paste=Pegar + +err.noUpload=Upload Failed + +status=Status + +mess.left=Time Left +browse=Browse +mb=Mb + +kb=KB + +transferred=transferred + +image=image + +mess.elapsed=Time Elapsed + +err.noPerm=Permission to upload files denied, cannot continue + +of=of +PK +������N|7a$�����������res/messages_fr.propertiescancel=Annuler +exit=Quitter + +bytes=Octets + +upload=Chargement + +download=T�l�chargement + +total=total + +err.generic2=Les fichiers ou dossiers s�lectionn�s ne peuvent pas �tre charg�s + +mess.scale=Essai de redimentionnement des images + +title.upload=Envoi en cours + +title.download=T�l�chargement en cours + +mess.wait=Veuillez patienter + +mess.proced=Envoi en cours + +mess.gzip=Compression des fichiers + +paste=Collez votre s�lection de fichiers ici + +err.noUpload=Le chargement a �chou� + +status=Etat + +mess.left=Temps restant + +mess.elapsed=temps \u00E9coul\u00E9 + +browse=Parcourir + +mb=Mo + +kb=Ko + + +transferred=transferred + +image=image + +err.noPerm=Permission to upload files denied, cannot continue + +of=of +PK +������N|7,#�X���������res/messages_hu.propertiesof= - + +transferred=feldolgozva + +cancel=M�gse + +exit=Kil�p�s + +bytes=b�jt + +upload=Felt�lt�s + +download=Let�lt�s + +total=�sszesen + +err.generic2=A megadott �llom�nyokat/mapp�kat nem lehet felt�lteni + +title.upload=Felt�lt�s folyamatban + +title.download=Let�lt�s folyamatban + +paste=Beilleszt�s + +err.noUpload=Felt�lt�s sikertelen + +status=St�tusz + +mess.scale=M�ret igaz�t�s +mess.wait=Feldolgoz�s folyamatban +mess.proced=Feldolgozott �llom�nyok +mess.gzip=T�m�r�t�s +mess.left=Marad�k id? +mess.elapsed=Eltelt id? + +browse=Tall�z + +mb=MB + +kb=KB + +image=image + +err.noPerm=Permission to upload files denied, cannot continue +PK +������N|7�J8:��:�����res/messages_is.propertiescancel=H�tta vi� + +exit=H�tta + +bytes=B�ti + +upload=Senda + +download=S�kja + +total=Samtals + +err.generic2=Ekki var h�gt a� senda skr�rnar og m�ppurnar sem �� valdir! + +mess.scale=Reyni a� minnka myndir + +title.upload=Sending � gangi + +title.download=Ni�urhal � gangi + +mess.wait=B�ddu + +mess.proced=Skr�r unnar + +mess.gzip=Reyni a� �jappa skr�r + +paste=L�ma + +err.noUpload=Sending mist�kst + +status=Sta�a + +mess.left=T�mi eftir + +transferred=sent +image=mynd + +browse=Finna skr�r +mess.elapsed=Heildart�mi + +mb=Mb + +kb=KB + +err.noPerm=Permission to upload files denied, cannot continue + +of=of +PK�����XO|7{y�l ����������������������META-INF/MANIFEST.MFPK����W��8���k ������������������� ��META-INF/WIHLICER.SFPK����W��8��R����� +���������������K��META-INF/WIHLICER.RSAPK����XO|7���._ ������������������T��META-INF/SOBAYLI.SFPK����XO|7ݚ����.����������������#��META-INF/SOBAYLI.DSAPK +� +�����WO|7������������ ������������>'��META-INF/����PK +� +������N|7�������������������������i'��com/PK +� +������N|7��������������������������'��com/radinks/PK +� +������N|7��������������������������'��com/radinks/dnd/PK +� +������N|7��������������������������'��com/radinks/dnd/events/PK +� +������N|7�������������������������(��com/radinks/dnd/https/PK +� +������N|7�������������������������L(��com/radinks/dnd/util/PK +� +������N|7�������������������������(��com/radinks/net/PK +� +������N|7��������������������������(��com/radinks/sftp/PK +� +������N|7��������������������������(��com/radinks/sftp/common/PK +� +������N|7������������ +�������������)��com/thinfile/PK +� +������N|7�������������������������=)��com/thinfile/upload/PK +� +������N|7�������������������������o)��images/PK +� +������N|7��������������������������)��res/PK +� +������N|7�(������"��������������)��com/radinks/dnd/BrowserProxy.classPK +� +������N|7�8�X��������������������-��com/radinks/dnd/DND$1.classPK +� +������N|7�V(�������������������0��com/radinks/dnd/DND$2.classPK +� +������N|7QY9��������������������5��com/radinks/dnd/DND$3.classPK +� +������N|7��VZ��Z���������������8��com/radinks/dnd/DND$4.classPK +� +������N|7;�?x�0���0����������������=��com/radinks/dnd/DND.classPK +� +������N|7����������������������^n��com/radinks/dnd/DNDPlus$1.classPK +� +������N|7�U�P�������������������_���com/radinks/dnd/DNDPlus$2.classPK +� +������N|7L��H��H�������������������com/radinks/dnd/DNDPlus.classPK +� +������N|7O��OU��U��2����������������com/radinks/dnd/FTPConnection$DataConnection.classPK +� +������N|7�G�(A%��A%��#�������������Ħ��com/radinks/dnd/FTPConnection.classPK +� +������N|7�8; #�� #���������������F���com/radinks/dnd/FTPPoster.classPK +� +������N|7L-��}��}��#�����������������com/radinks/dnd/FTPPosterPlus.classPK +� +������N|75V�m������$�������������J���com/radinks/dnd/HTTPConnection.classPK +� +������N|7�zݰ� +��� +��"�������������[�com/radinks/dnd/ImagePreview.classPK +� +������N|75�I��������������������:%�com/radinks/dnd/Poster.classPK +� +������N|7�0�T������"�������������gA�com/radinks/dnd/PosterBase$1.classPK +� +������N|7HJU�#���#�� �������������2E�com/radinks/dnd/PosterBase.classPK +� +������N|7o[@'��'�� �������������i�com/radinks/dnd/PosterPlus.classPK +� +������N|7A������!��������������l�com/radinks/dnd/ProxyDetect.classPK +� +������N|7o.������� ��������������o�com/radinks/dnd/SniffProxy.classPK +� +������N|7�?][��[��(��������������u�com/radinks/dnd/events/UploadEvent.classPK +� +������N|7�*���������+�������������Iy�com/radinks/dnd/events/UploadListener.classPK +� +������N|7��R ��R ��+�������������sz�com/radinks/dnd/https/DNDTrustManager.classPK +� +������N|7�u�������+���������������com/radinks/dnd/https/HTTPSConnection.classPK +� +������N|71V:��:��'�������������"��com/radinks/dnd/util/CommonUtil$1.classPK +� +������N|7zl�í�����%����������������com/radinks/dnd/util/CommonUtil.classPK +� +������N|7�Q:�������#����������������com/radinks/dnd/util/DemoUtil.classPK +� +������N|7����} +��} +��#����������������com/radinks/dnd/util/GZipUtil.classPK +� +������N|77�r/2��2��$�������������V��com/radinks/dnd/util/ScaleUtil.classPK +� +������N|7���4����/����������������com/radinks/net/AbstractProgressMonitor$1.classPK +� +������N|7�tA��A��/���������������com/radinks/net/AbstractProgressMonitor$2.classPK +� +������N|7Īз�����-����������������com/radinks/net/AbstractProgressMonitor.classPK +� +������N|7 +Y|� ��� �����������������com/radinks/net/FileAttrs.classPK +� +������N|73�`&9��9��!���������������com/radinks/net/IRemoteFile.classPK +� +������N|7��!C��C�� �������������C�com/radinks/net/IconLoader.classPK +� +������N|7ɋ�������(��������������!�com/radinks/net/ImgProgressMonitor.classPK +� +������N|7@�e����"������������� 5�com/radinks/net/MSRemoteFile.classPK +� +������N|7zO������(�������������c<�com/radinks/net/NetProgressMonitor.classPK +� +������N|7���?��?��)��������������>�com/radinks/net/ProgressMonitorImpl.classPK +� +������N|7`�&N5��5�� �������������1T�com/radinks/net/RemoteFile.classPK +� +������N|7� +�l��l��%��������������\�com/radinks/net/SimpleMonitor$1.classPK +� +������N|71�%������#�������������Sb�com/radinks/net/SimpleMonitor.classPK +� +������N|7��i������"�������������C{�com/radinks/net/SmallMonitor.classPK +� +������N|7b�;F~��~��$�������������?��com/radinks/net/UnixRemoteFile.classPK +� +������N|7d������ ����������������com/radinks/sftp/FileTable.classPK +� +������N|7{W� +O��O��%�������������P��com/radinks/sftp/FileTableModel.classPK +� +������N|75AZ����(���������������com/radinks/sftp/FileTableRenderer.classPK +� +������N|7Q�@�������&�������������+��com/radinks/sftp/LocalTableModel.classPK +� +������N|7L{��������$����������������com/radinks/sftp/SFTPListModel.classPK +� +������N|7�B�2� +��� +��,����������������com/radinks/sftp/common/BaseComparator.classPK +� +������N|7YwKG��G��)����������������com/thinfile/upload/ResourceManager.classPK +� +������N|7�`������&�������������P��com/thinfile/upload/ThinApplet$1.classPK +� +������N|7��E��E��&�������������h��com/thinfile/upload/ThinApplet$2.classPK +� +������N|7���dI��I��5����������������com/thinfile/upload/ThinApplet$DNDMouseListener.classPK +� +������N|7��%��'���'��$���������������com/thinfile/upload/ThinApplet.classPK +� +������N|7���7��7��'��������������-�com/thinfile/upload/ThinImageDemo.classPK +� +������N|7��V������+�������������-1�com/thinfile/upload/ThinImageUpload$1.classPK +� +������N|75�EI������)�������������7�com/thinfile/upload/ThinImageUpload.classPK +� +������N|7�ֻ+��+��������������� +:�images/file-small.gifPK +� +������N|7 �������������������h<�images/folder-small.gifPK +� +������N|7[%��>��>����������������@�images/nopreview.gifPK +� +������N|7�!�h��h�� +������������� +B�images/up.pngPK +� +������N|7�r��������������������D�images/x.jpgPK +� +������N|7*t8I��I����������������G�res/messages.propertiesPK +� +������N|7HɌ}��}���������������,J�res/messages_ca.propertiesPK +� +������N|7X��s��s����������������L�res/messages_dk.propertiesPK +� +������N|7ɭ�܁�������������������O�res/messages_es.propertiesPK +� +������N|7a$���������������������ER�res/messages_fr.propertiesPK +� +������N|7,#�X�������������������0U�res/messages_hu.propertiesPK +� +������N|7�J8:��:����������������W�res/messages_is.propertiesPK����Z�Z����bZ��� \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/java-upload/applet.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/java-upload/Attic/applet.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/java-upload/applet.adp 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,39 @@ +<html> +<head> +<title>Upload Widget</title> +</head> +<body style="padding:0;margin:0"> + +<object id='thinapplet' type='application/x-java-applet' width= '300' height= '250' name='ThinUpload'> +<param name='archive' value='/ajaxpa/java-upload/ThinUPload.jar'> +<param name='code' value='com.thinfile.upload.ThinImageUpload'> +<param name='scriptable' value='true'> +<param name='MAYSCRIPT' value='yes'> +<param name='props_file' value='http://10.0.0.208/ajaxpa/java-upload/thinupload.properties'> +<param name='user_id' value='@user_id@'> +<param name='album_id' value='@album_id@'> +<param name='package_id' value='@package_id@'> +<param name='name' value='Thin Upload'> +</object> + +<center> +<!-- +TODO : +- script to close this window +- restore the parent window +- script to refresh the currently selected album +--> +<a href="javascript:void(0)" style="display:block;padding:3px;background:#cccccc;text-decoration:none;font-weight:bold;margin:2px;font-family:arial,verdana" onclick="close_window()">CLOSE</a> +</center> + +<script> +function close_window() { + window.opener.paInstance.restore_window(); + window.close(); +} +</script> + +<iframe id="extiframe" name="extiframe" src="begin.html" style="width:0px;height:0px;border:0px"></iframe> + +</body> +</html> \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/java-upload/applet.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/java-upload/Attic/applet.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/java-upload/applet.tcl 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,15 @@ +ad_page_contract { + + Sets up the java applet with the album id to use when uploading + + + @author Hamilton Chua (ham@solutiongrove.com) + +} { + album_id:integer,notnull + package_id:integer,notnull +} + +set user_id [ad_conn user_id] + +ad_return_template Index: openacs-4/packages/ajax-photoalbum-ui/www/java-upload/begin.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/java-upload/Attic/begin.html,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/java-upload/begin.html 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,6 @@ +<html> +<body style="background-color:#e2e2e2;text-align:center"> +<br><br> +<b style="font-family:arial,verdana;font-size:16px">Drag photos from your computer here.</b> +</body> +</html> \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/java-upload/done.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/java-upload/Attic/done.html,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/java-upload/done.html 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,9 @@ +<html> +<body style="background-color:#e2e2e2;text-align:center"> +<br><br> +<b style="font-family:arial,verdana;font-size:16px">Uploads completed. <br />One moment please ...</b><br /> +<img src='/resources/ajaxhelper/images/indicator_big.gif' /> +<script>window.parent.close_window()</script> +</body> + +</html> \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/java-upload/handle-upload.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/java-upload/Attic/handle-upload.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/java-upload/handle-upload.tcl 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,72 @@ +ad_page_contract { + + Upload photos dragged into the java applet + +} { } + +set q [ns_parsequery [ns_conn query]] +set album_id [ns_set get $q album_id] +set package_id [ns_set get $q package_id] + +# ns_log notice "HANDLING UPLOAD via Java Applet : $album_id : $package_id" + +# Set the form conn + +set formvar [ns_conn form] + +set variable_count [ns_set size $formvar] +set total_file_count [expr {$variable_count / 3}] + +for {set i 0} {$i < $variable_count} {incr i} { + set aname [ns_set key $formvar $i] + append var_string "$aname " + # ns_log notice "HAM : $aname *************" +} + +# ns_log notice "$variable_count : $total_file_count" + +# upload the image file +for {set i 0} {$i < $total_file_count} {incr i} { + + set file_variable_name "userfile\[$i\]" + set tmpfile_name "${file_variable_name}.tmpfile" + + set filename [ns_set value $formvar [ns_set find $formvar $file_variable_name]] + + if {$filename==""} { + continue + } + + # Get rid of UNIX style directory names. + + set filename [file tail [DoubleApos $filename]] + set filetype [string tolower [file extension ${filename}]] + + # Get rid of DOS style directory names. + + regsub {.*\\([^\\]+)$} $filename {\1} filename + + # Get the file uploaded to the server + + set input_file_location [ns_set value $formvar [ns_set find $formvar $tmpfile_name]] + + # create a new photo + + # ns_log notice " ********** $input_file_location ***************" + + set new_photo_ids [pa_load_images \ + -remove 1 \ + -client_name $filename \ + -description "" \ + -story "" \ + -caption "" \ + -package_id $package_id \ + ${input_file_location} $album_id 568] + + # ns_log notice "uploading : $new_photo_ids *************" + +} + +pa_flush_photo_in_album_cache $album_id + +ns_return 200 "text/html" "<html><body><br><br><center><img src='/resources/ajaxhelper/images/indicator_big.gif'><br><br><font face='arial,verdana,sans serif'>One moment please ....</font></center></body></html>" \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/java-upload/thinupload.properties =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/java-upload/Attic/thinupload.properties,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/java-upload/thinupload.properties 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,231 @@ +# Configuration file for Thin Image Upload +# +# Online documentation is available at http://upload.thinfile.com/docs/ +# Lines begining with the '#' symbol denote comments. They will not +# be processed. +# + +# +# The url is the upload destination. It should point to the script on +# your server that will accept the uploaded files. +# +# Example: +# url=http://upload.thinfile.com/demo/upload.php +# url=http://upload.thinfile.com/cgi-bin/upload.cgi +# +url=http://10.0.0.208/ajaxpa/java-upload/handle-upload.tcl + +# +# To change the welcome message displayed when the applet starts up, +# change the message property. It should be a valid url and should point +# to a web page. +# +# Example: +# message=http://upload.thinfile.com/demo/init.php +# +message=http://10.0.0.208/ajaxpa/java-upload/begin + +# +# If you want to impose a limit on the total size of the file upload +# enter a value in kilobytes for the max_upload parameter. A value +# of 0, the default means unlimited. Please make sure that the server +# side configuration does not impose a lower limit than what you choose +# for max_upload +# +# Example: +# max_upload=10240 +# will impose a limit of 10 Mega Bytes +# + +max_upload=0 + +# +# The max_upload property checks the sum of file sizes. You can impose +# a limit on the size of individual files using the max_file property. +# The value is in kilobytes. 0 means no limit. +# +# Example: +# max_file=2048 +# for a limit of 2 Mega Bytes +# + +max_file=0 + +# +# max_upload_message message will be displayed when either the max_upload or +# max_file setting has been exceeded. If you enter a text message it +# will be displayed as a popup. If you enter a URL, the chosen page be +# loaded with in the applet. (Note: size_exceeded is an alias for max_upload_message) +# +# Example: +# max_upload_message=http://upload.thinfile.com/demo/exceed.html +# + +# +# The next section is used to configure client side filtering. +# +# +# Enter a comma separated list of file extensions in the allow_types +# field. The applet will refuse to go ahead with the upload if any of +# the selected files do not match the list of extensions. +# +# Please use only lower case extensions. The applet will test for both +# cases as well as mixed case. +# +# The default behaviour of the applet when it encounters an unwanted file +# can be changed by editing the filter_action property. +# +# Example: +# allow_types=jpg,gif,png,tif,xcf,psd +# + +allow_types=jpg,gif,png + +# +# The filter_action property tells the applet what action to take if it +# encounters a file type that is not listed in the allow_types +# parameter. If you enter a value of 'reject' here the applet will +# refuse to go ahead with the file upload. Enter any other value and +# the applet will silently ignore the offending files. +# +# This setting takes effect only if the allow_types property is set +# +# Example: +# filter_action=reject +# + +# +# The reject_message will be shown when the user attempts to upload +# files that should not be allowed and the filter_action is set to +# reject. +# +# If you enter a text message here it will be displayed as a popup. +# A URl, will result in the a page being loaded inside the applet. +# +# Example: +# reject_message=http://upload.thinfile.com/demo/reject.html +# + +# +# As the name suggests the full_path setting determines if absolute pathnames +# should be sent to the server. If you switch this off, folder information will +# be stripped from the filenames. +# + +full_path=yes +# +# When the translate_path setting is switched on, windows style pathnames will +# be converted to unix style paths. In other words '\' becomes '/'. This +# setting is required for Resumable file upload. +# + +translate_path=no +# +# When encode_path setting is switched on, pathnames are URLEncoded. This is +# usefull if you are dealing with filenames that contain special characters. +# this setting is required for resumable file upload. +# + +encode_path=no + +# +# The progress indicator can display a thumbnail of each image as it is being +# uploaded. To enable this feature uncomment the show_thumb property below. +# +# Example: +# show_thumb=1 +# + +show_thumb=1 + +# +# If you need to disable the multiple upload feature, and to upload files +# one at a time, switch to bachelor mode. When bachelor property is set +# the applet will complain if you try to upload more than one file. Use +# the angry_bachelor property to set the error message to be displayed. +# +# Example: +# bachelor=1 +# angry_bachelor=http://upload.thinfile.com/demo/single.html +# + +# +# If you switch on the browse setting the applet listens for mouse clicks +# and brings up a file selection dialog. If instead of clicking on the drop +# target you wish to display a browse button set the browse_button +# property as well. +# +# Example: +# browse=1 +# browse_button=1 +# + +browse=0 +browse_button=0 + +# +# The next bit is for image scaling. Images that are either wider than +# the img_max_width or taller than img_max_height will be scaled down. +# If scale_images=yes, you must set valid integer values for +# img_max_width and img_max_height. +# +# It should be noted that the java language does not support creating +# GIF files as such all scaled images will be in the JPG format. You +# will need to set the allow_types to match gif,jpg and png if you wish +# to make use of this feature. +# +# Example: +# scale_images=yes +# img_max_width=100 +# img_max_height=100 +# + +scale_images=no +img_max_width=100 +img_max_height=100 + +# +# If you wish to create several images of varying sizes you can make +# use of array notation. +# +# Example: +# scale_images=yes +# img_max_width[0]=100 +# img_max_height[0]=100 +# img_max_width[1]=200 +# img_max_height[1]=200 +# + +# +# By default the progress indicator will be hidden (closed) when the upload +# completes. By uncommenting the following line you can continue to keep the +# progress bar visible even after upload has been completed. The user will +# then have to manually close the progress bar. +# +# Example: +# monitor_keep_visible=yes +# + +# +# The applet or the entire browser can be redirected to another page +# when upload completes. Select the destination URL with the +# external_redir parameter. +# +# If you do not enter a value for the external_target property, the URL +# given external_target will be loaded with in the applet. Otherwise +# the page will be loaded in the target frame. To redirect the entire +# browser window use '_top' as the target. +# +# If you wish to delay the redirect, enter a value for the +# redirect_delay property (in milliseconds). +# +# Example: +# external_redir=http://upload.thinfile.com +# external_target=_top +# redirect_delay=1000 +# +external_redir=http://10.0.0.208/ajaxpa/java-upload/done +external_target=extiframe +redirect_delay=5000 + +# jsnotify=true \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/FileUploadField.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/FileUploadField.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/FileUploadField.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,129 @@ +/* + * Ext JS Library 2.2 + * Copyright(c) 2006-2008, Ext JS, LLC. + * licensing@extjs.com + * + * http://extjs.com/license + */ + + +Ext.form.FileUploadField = Ext.extend(Ext.form.TextField, { + /** + * @cfg {String} buttonText The button text to display on the upload button (defaults to + * 'Browse...'). Note that if you supply a value for {@link #buttonCfg}, the buttonCfg.text + * value will be used instead if available. + */ + buttonText: 'Browse...', + /** + * @cfg {Boolean} buttonOnly True to display the file upload field as a button with no visible + * text field (defaults to false). If true, all inherited TextField members will still be available. + */ + buttonOnly: false, + /** + * @cfg {Number} buttonOffset The number of pixels of space reserved between the button and the text field + * (defaults to 3). Note that this only applies if {@link #buttonOnly} = false. + */ + buttonOffset: 3, + /** + * @cfg {Object} buttonCfg A standard {@link Ext.Button} config object. + */ + + // private + readOnly: true, + + /** + * @hide + * @method autoSize + */ + autoSize: Ext.emptyFn, + + // private + initComponent: function(){ + Ext.form.FileUploadField.superclass.initComponent.call(this); + + this.addEvents( + /** + * @event fileselected + * Fires when the underlying file input field's value has changed from the user + * selecting a new file from the system file selection dialog. + * @param {Ext.form.FileUploadField} this + * @param {String} value The file value returned by the underlying file input field + */ + 'fileselected' + ); + }, + + // private + onRender : function(ct, position){ + Ext.form.FileUploadField.superclass.onRender.call(this, ct, position); + + this.wrap = this.el.wrap({cls:'x-form-field-wrap x-form-file-wrap'}); + this.el.addClass('x-form-file-text'); + this.el.dom.removeAttribute('name'); + + this.fileInput = this.wrap.createChild({ + id: this.getFileInputId(), + name: this.name||this.getId(), + cls: 'x-form-file', + tag: 'input', + type: 'file', + size: 1 + }); + + var btnCfg = Ext.applyIf(this.buttonCfg || {}, { + text: this.buttonText + }); + this.button = new Ext.Button(Ext.apply(btnCfg, { + renderTo: this.wrap, + cls: 'x-form-file-btn' + (btnCfg.iconCls ? ' x-btn-icon' : '') + })); + + if(this.buttonOnly){ + this.el.hide(); + this.wrap.setWidth(this.button.getEl().getWidth()); + } + + this.fileInput.on('change', function(){ + var v = this.fileInput.dom.value; + this.setValue(v); + this.fireEvent('fileselected', this, v); + }, this); + }, + + // private + getFileInputId: function(){ + return this.id+'-file'; + }, + + // private + onResize : function(w, h){ + Ext.form.FileUploadField.superclass.onResize.call(this, w, h); + + this.wrap.setWidth(w); + + if(!this.buttonOnly){ + var w = this.wrap.getWidth() - this.button.getEl().getWidth() - this.buttonOffset; + this.el.setWidth(w); + } + }, + + // private + preFocus : Ext.emptyFn, + + // private + getResizeEl : function(){ + return this.wrap; + }, + + // private + getPositionEl : function(){ + return this.wrap; + }, + + // private + alignErrorIcon : function(){ + this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]); + } + +}); +Ext.reg('fileuploadfield', Ext.form.FileUploadField); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa-min.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa-min.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa-min.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +Ext.namespace("paCore");Ext.namespace("ajaxpa");Ext.BLANK_IMAGE_URL="/resources/ajaxhelper/ext2/resources/images/default/s.gif";paCore=function(c,b,a){this.package_id=c;this.xmlhttpurl=b;this.packageurl=a};paCore.prototype={createTreeloader:function(){var a=new Ext.tree.TreeLoader({dataUrl:this.xmlhttpurl+"load-treenodes",baseParams:{package_id:this.package_id}});return a},createPhotoStore:function(b){var a=new Ext.data.JsonStore({url:b.xmlhttpurl+"get-photos",totalProperty:"totalPhotos",root:"photos",id:"photo_id",fields:[{name:"photo_id",type:"int"},{name:"view_image_id",type:"int"},{name:"thumb_photo_id",type:"int"},{name:"caption"},{name:"shortcaption"},{name:"path"},{name:"story"},{name:"fullimage_path"},{name:"shadowbox"}]});return a},formSubmit:function(e,g,b,d,f,h,c,i){switch(e){case"addfolder":var a=this.packageurl+"folder-add";break;case"editfolder":var a=this.packageurl+"folder-edit";break;case"addalbum":var a=this.packageurl+"album-add";break;case"editalbum":var a=this.packageurl+"album-edit";break;case"editphoto":var a=this.packageurl+"photo-edit";break}if(a){g.submit({url:a,waitMsg:b,params:d,scope:i,success:h,failure:c})}},doAction:function(g,a,e,b,h,f){var d=null;switch(g){case"deletefolder":d=this.packageurl+"folder-delete";break;case"deletealbum":d=this.packageurl+"album-delete";break;case"deletephoto":d=this.packageurl+"photo-delete";break;case"getonephoto":d=this.xmlhttpurl+"get-onephoto";break;case"getnextobjid":d=this.xmlhttpurl+"nextobjid";break;case"movephoto":d=this.xmlhttpurl+"move-photos";break;case"movenode":d=this.xmlhttpurl+"move-node";break}if(d){var c={url:d,success:a,failure:e,params:h};if(b){c.callback=b}if(a){c.success=a}if(e){c.failure=e}if(f){c.scope=f}Ext.Ajax.request(c)}}};ImageDragZone=function(a,b){this.view=a;ImageDragZone.superclass.constructor.call(this,a.getEl(),b)};Ext.extend(ImageDragZone,Ext.dd.DragZone,{getDragData:function(h){var j=h.getTarget(".thumb-wrap");if(j){var l=this.view;if(h.ctrlKey==false){if(!l.isSelected(j)){l.onClick(h)}}var b=l.getSelectedNodes();var c={nodes:b};if(b.length==1){c.ddel=j.firstChild;c.single=true}else{var a=document.createElement("div");a.className="multi-proxy";for(var d=0,g=b.length;d<g;d++){var k=b[d].firstChild.cloneNode(true);Ext.get(k).setSize(50,50,false);a.appendChild(k);if((d+1)%3==0){a.appendChild(document.createElement("br"))}}var f=document.createElement("div");f.innerHTML=d+" images selected";Ext.get(f).setStyle("clear","both");a.appendChild(f);c.ddel=a;c.multi=true}return c}return false},getTreeNode:function(){var e=[];var b=this.view.getRecords(this.dragData.nodes);for(var c=0,a=b.length;c<a;c++){var d=b[c].data;e.push(new Ext.tree.TreeNode({text:d.name,icon:"../view/"+d.url,data:d,leaf:true,cls:"image-node"}))}return e},afterRepair:function(){for(var b=0,a=this.dragData.nodes.length;b<a;b++){Ext.fly(this.dragData.nodes[b]).frame("#8db2e3",1)}this.dragging=false},getRepairXY:function(b){if(!this.dragData.multi){var a=Ext.Element.fly(this.dragData.ddel).getXY();a[0]+=3;a[1]+=3;return a}return false}});ajaxpa=function(a){this.config=null;this.layout=null;this.xmlhttpurl="/ajaxpa/xmlhttp/";this.shadowbox_gallery=[];this.genericErrorFn=function(){Ext.Msg.alert("Error","Sorry, an error occurred. Please try again later.")};this.restore_window=function(){window.focus();this.refreshTreenode()};this.initObj=function(){if(!Ext.isIE){window.addEventListener("dragdrop",function(b){b.stopPropagation()},false)}if(Ext.isSafari){window.addEventListener("dragover",function(b){b.returnValue=false},false)}if(a){this.config=a;if(this.config.xmlhttpurl){this.xmlhttpurl=this.config.xmlhttpurl}}if(this.config.user_id!=0){this.thumbTemplate=new Ext.XTemplate('<tpl for=".">','<div class="thumb-wrap" id="wrap{photo_id}">','<div class="thumb" id="thumb{photo_id}" style="width:150px;height:110px;background:url({path}) no-repeat center center" ','<tpl if="story">','ext:qtip="{story}"',"</tpl>","></div>",'<div id="caption-{photo_id}" class="img_caption" ext:qtip="{caption}">{shortcaption}</div>','<div id="tools-{photo_id}" class="img_tools" style="visibility:hidden">','<img id="view-{photo_id}" ext:qtip="View Photo" class="img_view" src="/resources/ajaxhelper/icons/magnifier.png" border=0 /> ','<img id="downoad-{photo_id}" ext:qtip="Download Photo" class="img_download" src="/resources/ajaxhelper/icons/arrow_down.png" border=0 /> ','<img id="edit-{photo_id}" ext:qtip="Edit Properties" class="img_edit" src="/resources/ajaxhelper/icons/image_edit.png" border=0 /> ','<img id="delete-{photo_id}" ext:qtip="Delete" class="img_delete"src="/resources/ajaxhelper/icons/cross.png" border=0 />',"</div></div>","</tpl>",'<div class="x-clear"></div>')}else{this.thumbTemplate=new Ext.XTemplate('<tpl for=".">','<div class="thumb-wrap" id="wrap{photo_id}">','<div class="thumb" id="thumb{photo_id}" style="width:150px;height:110px;background:url({path}) no-repeat center center" ','<tpl if="story">','ext:qtip="{story}"',"</tpl>","></div>",'<div id="caption-{photo_id}" class="img_caption" ext:qtip="{caption}">{shortcaption}</div>','<div id="tools-{photo_id}" ext:qtip="View Photo" class="img_tools" style="visibility:hidden;text-align:right">','<img id="view-{photo_id}" ext:qtip="Download Photo" class="img_download" src="/resources/ajaxhelper/icons/magnifier.png" border=0 />',"</div></div>","</tpl>",'<div class="x-clear"></div>')}this.paCore=new paCore(this.config.package_id,this.xmlhttpurl,this.config.package_url);this.photoStore=this.paCore.createPhotoStore(this);this.photoStore.on("load",function(d,c){this.shadowbox_gallery=[];for(var b=0;b<c.length;b++){this.shadowbox_gallery.push(c[b].get("shadowbox"))}},this);Ext.QuickTips.init();Shadowbox.init({handleOversize:"drag",skipSetup:true});this.initLayout()};Ext.onReady(this.initObj,this,true)};ajaxpa.prototype={initLayout:function(){var b=[this.createCenter(),this.createNav()];if(this.config!=null&&this.config.layoutdiv){Ext.get(this.config.layoutdiv).setHeight(500,false);Ext.get(this.config.layoutdiv).update("");this.layout=new Ext.Panel({id:"pa-ui",layout:"border",applyTo:this.config.layoutdiv,monitorResize:true,items:b})}else{this.layout=new Ext.Viewport({id:"pa-ui",layout:"border",items:b})}var a=new ImageDragZone(Ext.getCmp("pa-thumbsview-data"),{containerScroll:true,ddGroup:"photosDD"})},checkPerms:function(a){var b=Ext.getCmp("pa-nav").getSelectionModel().getSelectedNode();if(a=="read"){return b.attributes.attributes.read_p}else{return b.attributes.attributes.write_p}},createNav:function(){var c=new Ext.tree.AsyncTreeNode({text:this.config.rootfolder_name,expanded:true,id:this.config.rootfolder_id,attributes:{type:"folder",read_p:this.config.root_read_p,write_p:this.config.root_write_p}});var a=this.paCore.createTreeloader();var d=new Ext.menu.Menu({id:"newmenu",items:[{id:"menu_newfolder",text:acs_lang_text.folder||"Folder",icon:"/resources/ajaxhelper/icons/folder.png",cls:"x-btn-text-icon",handler:this.addTreenode.createDelegate(this,["folder"])},{id:"menu_newalbum",text:acs_lang_text.album||"Album",icon:"/resources/ajaxhelper/icons/folder_picture.png",cls:"x-btn-text-icon",handler:this.addTreenode.createDelegate(this,["album"])},{id:"menu_newphoto",text:acs_lang_text.photo||"Photo",icon:"/resources/ajaxhelper/icons/picture.png",cls:"x-btn-text-icon",handler:this.newPhoto,scope:this}]});var b=new Ext.tree.TreePanel({id:"pa-nav",region:"east",title:acs_lang_text.foldersandalbums||"Folders & Albums",split:true,width:250,monitorResize:true,minSize:175,maxSize:400,autoScroll:true,ddAppendOnly:true,animate:true,enableDD:true,ddGroup:"photosDD",collapsible:true,collapseMode:"mini",hideCollapseTool:true,containerScroll:true,tbar:[{text:acs_lang_text.newitem||"New",icon:"/resources/ajaxhelper/icons/add.png",cls:"x-btn-text-icon",menu:d},{text:acs_lang_text.edititem||"Edit",icon:"/resources/ajaxhelper/icons/page_white_edit.png",cls:"x-btn-text-icon",handler:this.editTreenode,scope:this},{text:acs_lang_text.deleteitem||"Delete",icon:"/resources/ajaxhelper/icons/delete.png",cls:"x-btn-text-icon",handler:this.delTreenode,scope:this}],loader:a,root:c,listeners:{nodedragover:{scope:this,fn:function(f){if(f.target.attributes.attributes.write_p==0){f.cancel=true}if(f.source.tree){if(f.target.attributes.attributes.type=="album"){f.cancel=true}}if(f.source.view){if(f.target.attributes.attributes.type=="folder"){f.cancel=true}}}},nodedrop:{scope:this,fn:function(f){var g={target_folder_id:f.target.id,item_id:f.data.node.id,type:f.data.node.attributes.attributes.type};this.paCore.doAction("movenode",function(){},function(){},null,g,this)}},beforenodedrop:{scope:this,fn:function(i){if(i.source.tree){if(i.target.attributes.attributes.type=="album"){i.cancel=true}}if(i.source.view){i.cancel=true;if(i.target.attributes.attributes.type=="album"){i.dropStatus=true;var g=[];for(var f=0;f<i.data.nodes.length;f++){g.push(i.data.nodes[f].id.substring(4,i.data.nodes[f].id.length))}var k={target_album_id:i.target.id,image_ids:g};var j=function(){this.photoStore.reload()};var h=this.genericErrorFn;this.paCore.doAction("movephoto",j,h,null,k,this)}}}}}});c.on("expand",function(){b.fireEvent("click",c)},this,{single:true});b.on("click",this.loadPhotos,this);b.on("render",function(){if(this.config.user==0){b.getTopToolbar().hide()}},this);d.on("beforeshow",function(){var f=b.getSelectionModel().getSelectedNode();var e=f.attributes.attributes.type;if(e=="folder"){d.items.items[0].enable();d.items.items[1].enable();d.items.items[2].disable()}else{d.items.items[0].disable();d.items.items[1].disable();d.items.items[2].enable()}});return b},createCenter:function(){var c=[{text:acs_lang_text.collection||"Add a collection of photos to this album",icon:"/resources/ajaxhelper/icons/add.png",cls:"x-btn-text-icon",handler:function(){if(!this.checkPerms("write")){Ext.MessageBox.alert("Permission Denied","Sorry you do not have permission to perform this action.");return}var h=this.createOrGetWindow("pa-win-newcollection");var f="new_photo_collection_form";var e=Ext.getCmp(f);var d=function(j){Ext.getCmp("new_photo_collection_formid").setValue("photos_upload");var i=this.getSelectedTreeNodeId();Ext.getCmp("new_photo_collection_albumid").setValue(i);Ext.getCmp("new_photo_collection_photoid").setValue(j.responseText);Ext.getCmp("new_photo_collection_returnurl").setValue(this.xmlhttpurl+"formok");h.show()};var g=function(){if(e.getForm().isValid()){e.getForm().submit({url:this.config.package_url+"photos-add-2",waitMsg:"Uploading photo...",reset:true,scope:this,success:function(i,j){if(j.result){this.photoStore.reload();h.close()}else{Ext.MessageBox.alert("Error","Sorry an error occured. Make sure you have filled up all required fields.")}},failure:function(i,j){if(j.result){Ext.MessageBox.alert("Error",j.result.info)}else{Ext.MessageBox.alert("Error","Error occurred. Try again later")}}})}};e.getForm().reset();e.buttons[0].setHandler(g,this);e.buttons[0].setText("Upload");this.paCore.doAction("getnextobjid",d,this.genericErrorFn,null,null,this)},scope:this}];c.push({text:"Download selected Photos",tooltip:"Download selected photos. Press CTRL and then click on the photos you want to select",icon:"/resources/ajaxhelper/icons/arrow_down.png",cls:"x-btn-text-icon",handler:function(){var e=Ext.getCmp("pa-thumbsview-data").getSelectedNodes();if(e.length<1){Ext.Msg.alert("Error","Please select one or more photos to download")}else{var f=[];for(var d=0;d<e.length;d++){f.push(e[d].id.substring(4))}window.location.href="/ajaxpa/batchdownload/?photo_ids="+f}},scope:this});var b=new Ext.Panel({id:"pa-thumbsview",layout:"fit",plain:true,titlebar:false,tbar:c,bbar:new Ext.PagingToolbar({pageSize:parseInt(this.config.pagesize),displayInfo:true,emptyMsg:"No photos found",store:this.photoStore}),listeners:{render:{fn:function(d){d.body.addListener("click",function(g,i){var h=i.id.split("-");var k=h[1];switch(i.className){case"img_view":var f=this.photoStore.getById(k);var j=this.photoStore.indexOf(f);Shadowbox.open(this.shadowbox_gallery);Shadowbox.change(j);break;case"img_edit":this.editPhoto(k);break;case"img_delete":this.delPhoto(k);break;case"img_download":var f=this.photoStore.getById(k);window.location.href="/ajaxpa/download/"+f.get("view_image_id");break}},this)},scope:this}},items:new Ext.DataView({id:"pa-thumbsview-data",store:this.photoStore,tpl:this.thumbTemplate,style:"overflow:auto",overClass:"x-view-over",multiSelect:true,itemSelector:"div.thumb-wrap",loadingText:'<div class="largetext">Fetching photos . . .</div>',emptyText:'<div class="largetext">No photos found</div>',plugins:new Ext.DataView.DragSelector({dragSafe:true}),prepareData:function(d){d.caption=Ext.util.Format.ellipsis(d.caption,20);return d},listeners:{mouseenter:{fn:function(d,f,g,h){var i=Ext.get(g).id.substring(4,Ext.get(g).id.length);Ext.get("tools-"+i).show()},scope:this},mouseleave:{fn:function(d,f,g,h){var i=Ext.get(g).id.substring(4,Ext.get(g).id.length);Ext.get("tools-"+i).hide()},scope:this},dblclick:{fn:function(f,g,h,i){var k=Ext.get(h).id.substring(4,Ext.get(h).id.length);var d=this.photoStore.getById(k);var j=this.photoStore.indexOf(d);Shadowbox.open(this.shadowbox_gallery);Shadowbox.change(j)},scope:this}}})});var a=new Ext.Panel({id:"pa-card",layout:"card",region:"center",activeItem:0,items:[{xtype:"panel",html:'<div class="largetext">Click on an album to view photos</div>'},b]});return a},loadPhotos:function(a,b){if(a.attributes.attributes.type=="album"){Ext.getCmp("pa-card").layout.setActiveItem(1);this.photoStore.baseParams={album_id:a.id,package_id:this.config.package_id};this.photoStore.load({params:{start:0,limit:parseInt(this.config.pagesize)}})}else{Ext.getCmp("pa-card").layout.setActiveItem(0)}},refreshTreenode:function(){var a=Ext.getCmp("pa-nav").getSelectionModel().getSelectedNode();a.fireEvent("click",a)},delTreenode:function(){if(!this.checkPerms("write")){Ext.MessageBox.alert("Permission Denied","Sorry you do not have permission to perform this action.");return}var a=Ext.getCmp("pa-nav");var d=a.getSelectionModel().getSelectedNode();var b=d.attributes.attributes.type;if(a.getRootNode().id==d.id){Ext.Msg.alert("Error","Sorry, you can not delete the root folder")}else{if(b==="folder"){var e="deletefolder";var g={confirmed_p:"t",folder_id:d.id,return_url:this.xmlhttpurl+"formok"}}if(b==="album"){var e="deletealbum";var g={confirmed_p:"t",album_id:d.id,return_url:this.xmlhttpurl+"formok"}}var f=function(i){var h=d.parentNode;h.fireEvent("click",h);h.removeChild(d)};var c=this.genericErrorFn;if(e){Ext.MessageBox.confirm("Delete","Are you sure you want to delete <b>"+d.text+"</b> ?",function(h){if(h==="yes"){this.paCore.doAction(e,f,c,null,g,this)}},this)}}},addTreenode:function(a){if(!this.checkPerms("write")){Ext.MessageBox.alert("Permission Denied","Sorry you do not have permission to perform this action.");return}if(a==="folder"){var i="pa-win-newfolder";var f="new_folder_form";var l="addfolder";var b=acs_lang_text.newfolder||"New Folder";var k=function(n){Ext.getCmp("new_folder_formid").setValue("folder_add");var m=this.getSelectedTreeNodeId();Ext.getCmp("new_folder_parentid").setValue(m);Ext.getCmp("new_folder_folderid").setValue(n.responseText);Ext.getCmp("new_folder_returnurl").setValue(this.xmlhttpurl+"load-onenode?type=folder&node_id="+n.responseText);g.show()};var d="Creating folder"}if(a==="album"){var i="pa-win-newalbum";var f="new_album_form";var l="addalbum";var b=acs_lang_text.newalbum||"New Album";var k=function(n){Ext.getCmp("new_album_formid").setValue("album_add");var m=this.getSelectedTreeNodeId();Ext.getCmp("new_album_parentid").setValue(m);Ext.getCmp("new_album_albumid").setValue(n.responseText);Ext.getCmp("new_album_returnurl").setValue(this.xmlhttpurl+"load-onenode?type=album&node_id="+n.responseText);g.show()};var d="Creating album"}var g=this.createOrGetWindow(i);var h=Ext.getCmp(f);var j=function(m,n){if(n.result){if(n.result.info!="null"){this.addTreenodeEl(n.result.info)}else{Ext.MessageBox.alert("Error","Sorry an error occured. Please try again later.")}g.hide()}else{Ext.MessageBox.alert("Error","Sorry an error occured. Make sure you have filled up all required fields.")}};var c=function(m,n){if(n.result){Ext.MessageBox.alert("Error",n.result.info)}else{Ext.MessageBox.alert("Error","Error occurred. Try again later")}};var e=function(){this.paCore.formSubmit(l,h.getForm(),d,null,true,j,c,this)};if(g){g.setTitle(b);h.buttons[0].setHandler(e,this);h.buttons[0].setText("Create");this.paCore.doAction("getnextobjid",k,this.genericErrorFn,null,null,this)}},addTreenodeEl:function(c){var a=Ext.getCmp("pa-nav");var d=a.getSelectionModel().getSelectedNode();var b=new Ext.tree.TreeNode(c);var e=d.appendChild(b);a.getSelectionModel().select(e);e.loaded=true;e.fireEvent("click",e)},editTreenode:function(){if(!this.checkPerms("write")){Ext.MessageBox.alert("Permission Denied","Sorry you do not have permission to perform this action.");return}var e=Ext.getCmp("pa-nav").getSelectionModel().getSelectedNode();if(e){var f=e.attributes.attributes.type;var k=e.id;if(f==="folder"){var j="pa-win-newfolder";var g="new_folder_form";var a=acs_lang_text.editfolder||"Edit Folder";var n="editfolder";var m=function(q){var p=Ext.decode(q.responseText);if(p.success){Ext.getCmp("new_folder_formid").setValue("folder_edit");Ext.getCmp("new_folder_folderid").setValue(p.info.id);Ext.getCmp("new_folder_name").setValue(p.info.text);Ext.getCmp("new_folder_desc").setValue(p.info.qtip);Ext.getCmp("new_folder_returnurl").setValue(this.xmlhttpurl+"load-onenode?type=folder&node_id="+p.info.id);h.show()}};var c="Updating folder ..."}if(f==="album"){var j="pa-win-newalbum";var g="new_album_form";var a=acs_lang_text.editalbum||"Edit Album";var n="editalbum";var m=function(q){var p=Ext.decode(q.responseText);if(p.success){Ext.getCmp("new_album_formid").setValue("edit_album");Ext.getCmp("new_album_albumid").setValue(p.info.id);Ext.getCmp("new_album_name").setValue(p.info.text);Ext.getCmp("new_album_desc").setValue(p.info.qtip);Ext.getCmp("new_album_story").setValue(p.info.attributes.story);Ext.getCmp("new_album_photographer").setValue(p.info.attributes.photographer);Ext.getCmp("new_album_revisionid").setValue(p.info.attributes.revision_id);Ext.getCmp("new_album_prevrevisionid").setValue(p.info.attributes.previous_revision);Ext.getCmp("new_album_returnurl").setValue(this.xmlhttpurl+"load-onenode?type=album&node_id="+p.info.id);h.show()}};var c="Updating album ..."}var h=this.createOrGetWindow(j);var i=Ext.getCmp(g);var l=function(o,p){if(p.result){if(p.result.info!="null"){this.editTreenodeEl(p.result.info)}else{Ext.MessageBox.alert("Error","Sorry an error occured updating. Please try again later.")}h.hide()}else{Ext.MessageBox.alert("Error","Sorry an error occured. Make sure you have filled up all required fields.")}};var b=function(o,p){if(p.result){Ext.MessageBox.alert("Error",p.result.info)}else{Ext.MessageBox.alert("Error","Error occurred. Try again later")}};var d=function(){this.paCore.formSubmit(n,i.getForm(),c,null,true,l,b,this)};if(h){h.setTitle(a);i.buttons[0].setHandler(d,this);i.buttons[0].setText("Update");Ext.Ajax.request({url:this.config.xmlhttpurl+"load-onenode",params:{type:f,node_id:k,mode:"edit"},success:m,failure:this.genericErrorFn,scope:this})}}else{Ext.Msg.alert("Error","Please select a folder or album")}},editTreenodeEl:function(a){var b=Ext.getCmp("pa-nav").getSelectionModel().getSelectedNode();b.setText(a.text);b.ui.getTextEl().setAttributeNS("ext","qtip",a.qtip)},getSelectedTreeNodeId:function(){var a=Ext.getCmp("pa-nav").getSelectionModel().getSelectedNode().id;return a},createOrGetWindow:function(a){var b=Ext.getCmp(a);if(!b){switch(a){case"pa-win-newcollection":b=new Ext.Window({id:"pa-win-newphotocollection",title:acs_lang_text.collection||"Add a collection of photos to this album",width:290,height:140,autoScroll:true,modal:true,draggable:false,resizable:false,items:[{id:"new_photo_collection_form",xtype:"form",titlebar:false,plain:true,autoHeight:true,bodyStyle:{padding:"5px"},labelAlign:"top",method:"post",fileUpload:true,items:[{id:"new_photo_collection_formid",xtype:"hidden",name:"form:id",value:"photos_upload"},{id:"new_photo_collection_formode",xtype:"hidden",name:"form:mode",value:"edit"},{id:"new_photo_collection_returnurl",xtype:"hidden",name:"return_url",value:""},{id:"new_photo_collection_photoid",xtype:"hidden",name:"photo_id",value:""},{id:"new_photo_collection_albumid",xtype:"hidden",name:"album_id",value:""},{id:"new_photo_collection_file",xtype:"fileuploadfield",name:"upload_file",fieldLabel:"Choose a tar or zip file to upload",allowBlank:false,anchor:"95%",buttonCfg:{text:"",iconCls:"upload-icon"}}],buttons:[{text:"Upload",name:"formbutton:ok",scope:this,icon:"/resources/ajaxhelper/icons/accept.png",cls:"x-btn-text-icon"},{text:"Close",handler:function(){Ext.getCmp("new_photo_collection_form").getForm().reset();Ext.getCmp("pa-win-newphotocollection").close()},scope:this,icon:"/resources/ajaxhelper/icons/cross.png",cls:"x-btn-text-icon"}]}]});break;case"pa-win-newphoto":b=new Ext.Window({id:"pa-win-newphoto",title:acs_lang_text.uploadphoto||"Upload a New Photo",width:290,height:360,autoScroll:true,closeAction:"hide",modal:true,draggable:false,resizable:false,items:[{id:"new_photo_form",xtype:"form",titlebar:false,plain:true,autoHeight:true,bodyStyle:{padding:"5px"},labelAlign:"top",method:"post",fileUpload:true,items:[{id:"new_photo_formid",xtype:"hidden",name:"form:id",value:"photo_upload"},{id:"new_photo_formode",xtype:"hidden",name:"form:mode",value:"edit"},{id:"new_photo_returnurl",xtype:"hidden",name:"return_url",value:""},{id:"new_photo_photoid",xtype:"hidden",name:"photo_id",value:""},{id:"new_photo_albumid",xtype:"hidden",name:"album_id",value:""},{id:"new_photo_file",xtype:"fileuploadfield",name:"upload_file",fieldLabel:"Photo",allowBlank:false,emptyText:"Choose a photo to upload",anchor:"95%",buttonCfg:{text:"",iconCls:"upload-icon"}},{id:"new_photo_caption",xtype:"textfield",name:"caption",fieldLabel:"Caption",width:220},{id:"new_photo_desc",xtype:"textarea",name:"description",fieldLabel:"Description",width:220},{id:"new_photo_story",xtype:"textarea",name:"story",fieldLabel:"Story",width:220}],buttons:[{text:"Upload",name:"formbutton:ok",scope:this,icon:"/resources/ajaxhelper/icons/accept.png",cls:"x-btn-text-icon"},{text:"Close",handler:function(){Ext.getCmp("new_photo_form").getForm().reset();Ext.getCmp("pa-win-newphoto").hide()},scope:this,icon:"/resources/ajaxhelper/icons/cross.png",cls:"x-btn-text-icon"}]}]});break;case"pa-win-editphoto":b=new Ext.Window({id:"pa-win-editphoto",title:acs_lang_text.editphoto||"Edit Photo Attributes",width:290,height:360,autoScroll:true,closeAction:"hide",modal:true,draggable:false,resizable:false,listeners:{show:{scope:this,fn:function(){Ext.getCmp("edit_photo_title").focus(false,10)}}},items:[{id:"edit_photo_form",xtype:"form",titlebar:false,plain:true,autoHeight:true,bodyStyle:{padding:"5px"},labelAlign:"top",method:"post",items:[{id:"edit_photo_formid",xtype:"hidden",name:"form:id",value:"edit_photo"},{id:"edit_photo_formode",xtype:"hidden",name:"form:mode",value:"edit"},{id:"edit_photo_returnurl",xtype:"hidden",name:"return_url",value:""},{id:"edit_photo_photoid",xtype:"hidden",name:"photo_id",value:""},{id:"edit_photo_revisionid",xtype:"hidden",name:"revision_id",value:""},{id:"edit_photo_prevrevisionid",xtype:"hidden",name:"previous_revision",value:""},{id:"edit_photo_title",xtype:"textfield",name:"title",fieldLabel:"Title",width:220},{id:"edit_photo_caption",xtype:"textfield",name:"caption",fieldLabel:"Caption",width:220},{id:"edit_photo_desc",xtype:"textarea",name:"description",fieldLabel:"Description",width:220},{id:"edit_photo_story",xtype:"textarea",name:"story",fieldLabel:"Story",width:220}],buttons:[{text:"Update",name:"formbutton:ok",scope:this,icon:"/resources/ajaxhelper/icons/accept.png",cls:"x-btn-text-icon"},{text:"Close",handler:function(){Ext.getCmp("edit_photo_form").getForm().reset();Ext.getCmp("pa-win-editphoto").hide()},scope:this,icon:"/resources/ajaxhelper/icons/cross.png",cls:"x-btn-text-icon"}]}]});break;case"pa-win-newfolder":b=new Ext.Window({id:"pa-win-newfolder",title:acs_lang_text.newfolder||"New Folder",width:290,height:220,autoScroll:true,closeAction:"hide",modal:true,draggable:false,resizable:false,items:[{id:"new_folder_form",xtype:"form",titlebar:false,plain:true,autoHeight:true,bodyStyle:{padding:"5px"},labelAlign:"top",method:"post",items:[{id:"new_folder_name",xtype:"textfield",name:"label",fieldLabel:"Folder Name",width:220,allowBlank:false},{id:"new_folder_desc",xtype:"textarea",name:"description",fieldLabel:"Folder Description",width:220},{id:"new_folder_formid",xtype:"hidden",name:"form:id",value:"folder_add"},{id:"new_folder_formode",xtype:"hidden",name:"form:mode",value:"edit"},{id:"new_folder_returnurl",xtype:"hidden",name:"return_url",value:""},{id:"new_folder_folderid",xtype:"hidden",name:"folder_id",value:""},{id:"new_folder_parentid",xtype:"hidden",name:"parent_id",value:""}],buttons:[{text:"Create Folder",name:"formbutton:ok",scope:this,icon:"/resources/ajaxhelper/icons/accept.png",cls:"x-btn-text-icon"},{text:"Close",handler:function(){Ext.getCmp("new_folder_form").getForm().reset();Ext.getCmp("pa-win-newfolder").hide()},scope:this,icon:"/resources/ajaxhelper/icons/cross.png",cls:"x-btn-text-icon"}]}],listeners:{show:{scope:this,fn:function(){Ext.getCmp("new_folder_name").focus(false,10)}}}});break;case"pa-win-newalbum":b=new Ext.Window({id:"pa-win-newalbum",title:acs_lang_text.newalbum||"New Abum",width:290,autoHeight:true,autoScroll:true,closeAction:"hide",modal:true,draggable:false,resizable:false,listeners:{show:{scope:this,fn:function(){Ext.getCmp("new_album_name").focus(false,10)}}},items:[{id:"new_album_form",xtype:"form",titlebar:false,plain:true,autoHeight:true,bodyStyle:{padding:"5px"},labelAlign:"top",method:"post",items:[{id:"new_album_name",xtype:"textfield",name:"title",fieldLabel:"Album Name",width:220,allowBlank:false},{id:"new_album_photographer",xtype:"textfield",name:"photographer",fieldLabel:"Photographer",width:220},{id:"new_album_desc",xtype:"textarea",name:"description",fieldLabel:"Description",width:220},{id:"new_album_story",xtype:"textarea",name:"story",fieldLabel:"Album Story",width:220},{id:"new_album_formid",xtype:"hidden",name:"form:id",value:"album_add"},{id:"new_album_formmode",xtype:"hidden",name:"form:mode",value:"edit"},{id:"new_album_returnurl",xtype:"hidden",name:"return_url",value:""},{id:"new_album_albumid",xtype:"hidden",name:"album_id",value:""},{id:"new_album_revisionid",xtype:"hidden",name:"revision_id",value:""},{id:"new_album_prevrevisionid",xtype:"hidden",name:"previous_revision",value:""},{id:"new_album_parentid",xtype:"hidden",name:"parent_id",value:""}],buttons:[{text:"Create Album",name:"formbutton:ok",scope:this,icon:"/resources/ajaxhelper/icons/accept.png",cls:"x-btn-text-icon"},{text:"Close",handler:function(){Ext.getCmp("new_album_form").getForm().reset();Ext.getCmp("pa-win-newalbum").hide()},scope:this,icon:"/resources/ajaxhelper/icons/cross.png",cls:"x-btn-text-icon"}]}]});break}}return b},newPhoto:function(){if(!this.checkPerms("write")){Ext.MessageBox.alert("Permission Denied","Sorry you do not have permission to perform this action.");return}var e=this.createOrGetWindow("pa-win-newphoto");var c="new_photo_form";var b=Ext.getCmp(c);var a=function(g){Ext.getCmp("new_photo_formid").setValue("photo_upload");var f=this.getSelectedTreeNodeId();Ext.getCmp("new_photo_albumid").setValue(f);Ext.getCmp("new_photo_photoid").setValue(g.responseText);Ext.getCmp("new_photo_returnurl").setValue(this.xmlhttpurl+"formok");e.show()};var d=function(){if(b.getForm().isValid()){b.getForm().submit({url:this.config.package_url+"photo-add-2",waitMsg:"Uploading photo...",reset:true,scope:this,success:function(f,g){if(g.result){this.photoStore.reload();e.hide()}else{Ext.MessageBox.alert("Error","Sorry an error occured. Make sure you have filled up all required fields.")}},failure:function(f,g){if(g.result){Ext.MessageBox.alert("Error",g.result.info)}else{Ext.MessageBox.alert("Error","Error occurred. Try again later")}}})}};b.getForm().reset();b.buttons[0].setHandler(d,this);b.buttons[0].setText("Upload");this.paCore.doAction("getnextobjid",a,this.genericErrorFn,null,null,this)},delPhoto:function(a){Ext.MessageBox.confirm("Delete","Are you sure you want to delete this photo?",function(b){if(b==="yes"){var d=function(e){this.photoStore.reload()};var c=this.genericErrorFn;this.paCore.doAction("deletephoto",d,c,null,{confirmed_p:"t",photo_id:a,return_url:this.xmlhttpurl+"formok"},this)}},this)},editPhoto:function(f){var e=this.createOrGetWindow("pa-win-editphoto");var c="edit_photo_form";var b=Ext.getCmp(c);var a=function(h){var g=Ext.decode(h.responseText);if(g.success){Ext.getCmp("edit_photo_formid").setValue("edit_photo");Ext.getCmp("edit_photo_returnurl").setValue(this.xmlhttpurl+"get-onephoto?photo_id="+g.info.photo_id+"&package_id="+this.config.package_id+"&mode=display");Ext.getCmp("edit_photo_photoid").setValue(g.info.photo_id);Ext.getCmp("edit_photo_revisionid").setValue(g.info.revision_id);Ext.getCmp("edit_photo_prevrevisionid").setValue(g.info.prevrevision_id);Ext.getCmp("edit_photo_title").setValue(g.info.title);Ext.getCmp("edit_photo_caption").setValue(g.info.caption);Ext.getCmp("edit_photo_desc").setValue(g.info.description);Ext.getCmp("edit_photo_story").setValue(g.info.story);e.show()}};var d=function(){if(b.getForm().isValid()){var h=function(j,k){if(k.result){if(k.result.info!="null"){Ext.get("caption-"+k.result.info.photo_id).update(k.result.info.caption);if(k.result.info.story&&k.result.info.story!=""){var i=document.createAttribute("ext:qtip");i.value=k.result.info.story;Ext.get("thumb"+k.result.info.photo_id).dom.attributes.setNamedItem(i)}}else{Ext.MessageBox.alert("Error","Sorry an error occured trying to create your new folder. Please try again later.")}Ext.getCmp("pa-win-editphoto").hide()}else{Ext.MessageBox.alert("Error","Sorry an error occured. Make sure you have filled up all required fields.")}};var g=function(i,j){if(j.result){Ext.MessageBox.alert("Error",j.result.info)}else{Ext.MessageBox.alert("Error","Error occurred. Try again later")}};this.paCore.formSubmit("editphoto",currentfor.getForm(),"Updating photo ....",null,true,h,g,this)}};b.buttons[0].setHandler(d,this);b.buttons[0].setText("Update");this.paCore.doAction("getonephoto",a,this.genericErrorFn,null,{photo_id:f,package_id:this.config.package_id,mode:"edit"},this)}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa.css 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,113 @@ +.x-tree-node img.folder, .x-tree-node-collapsed img.folder{ + background: url(/resources/ajaxhelper/ext2/resources/images/default/tree/folder.gif) +} +.x-tree-node-expanded img.folder { + background: url(/resources/ajaxhelper/ext2/resources/images/default/tree/folder-open.gif) +} +.x-tree-node img.album, .x-tree-node-collapsed img.album { + background: transparent url(/resources/ajaxhelper/icons/folder_picture.png) no-repeat; +} +.x-tree-node-expanded img.album { + background: transparent url(/resources/ajaxhelper/icons/folder_picture.png) no-repeat; +} + +/* + * FileUploadField component styles + */ +.x-form-file-wrap { + position: relative; + height: 22px; +} +.x-form-file-wrap .x-form-file { + position: absolute; + right: 0; + -moz-opacity: 0; + filter:alpha(opacity: 0); + opacity: 0; + z-index: 2; + height: 22px; +} +.x-form-file-wrap .x-form-file-btn { + position: absolute; + right: 0; + z-index: 1; +} +.x-form-file-wrap .x-form-file-text { + position: absolute; + left: 0; + z-index: 3; + color: #777; +} + + +#pa-thumbsview .x-panel-body { + background:white none repeat scroll 0%; + font-family:Arial,Helvetica,sans-serif; + font-size:11px; + font-size-adjust:none; + font-stretch:normal; + font-style:normal; + font-variant:normal; + font-weight:normal; + line-height:normal; +} +#pa-thumbsview .thumb { + background:#DDDDDD none repeat scroll 0%; + padding:3px; + margin-bottom:2px; +} +#pa-thumbsview .thumb-wrap { + float:left; + margin:4px 0 0 4px; + padding:5px; +} +#pa-thumbsview .thumb-wrap span { + display:block; + overflow:hidden; +} +#pa-thumbsview .x-view-over { + background:#EFEFEF url(/resources/ajaxhelper/ext2/resources/images/default/grid/row-over.gif) repeat-x scroll left top; + border:1px solid #DDDDDD; + padding:4px; +} +#pa-thumbsview .x-view-selected { + background:#EFF5FB no-repeat scroll right bottom; + border:1px solid #99BBE8; + padding:4px; +} +#pa-thumbsview .x-view-selected .thumb { + background:transparent none repeat scroll 0%; +} +#pa-thumbsview .loading-indicator { + background-image:url(../../resources/images/default/grid/loading.gif); + background-position:left center; + background-repeat:no-repeat; + font-size:11px; + margin:10px; + padding-left:20px; +} +.largetext { + padding:20px 10px 10px 10px; + text-align:center; + color:#cccccc; + font-size:24px; + font-weight:bold; +} +.img_caption { + width:80px; + padding-left:3px; + float:left; +} +.img_tools img { + cursor:pointer; +} +.upload-icon { + background: url(/resources/ajaxhelper/icons/image_add.png) no-repeat 0 0 !important; +} +.x-dd-drag-proxy .multi-proxy .thumb { + height: 20px; + width: 30px; + margin:1px; + float:left; + overflow:auto; +} Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/ajaxpa.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,1546 @@ +/* + + Ajax Photo Album UI + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2007-11-18 + +*/ + +Ext.namespace('paCore'); +Ext.namespace('ajaxpa'); +Ext.BLANK_IMAGE_URL = '/resources/ajaxhelper/ext2/resources/images/default/s.gif'; + +/******** Photo Album Core Functions ***********/ + +paCore = function(package_id,xmlhttpurl,packageurl) { + this.package_id = package_id; + this.xmlhttpurl = xmlhttpurl; + this.packageurl = packageurl; +} + +paCore.prototype = { + + createTreeloader : function() { + var treeloader = new Ext.tree.TreeLoader({ + dataUrl:this.xmlhttpurl+'load-treenodes', + baseParams: { package_id:this.package_id } + }) + return treeloader + }, + + createPhotoStore : function(scope) { + var store = new Ext.data.JsonStore({ + url : scope.xmlhttpurl + 'get-photos', + totalProperty: 'totalPhotos', + root : 'photos', + id:'photo_id', + fields:[ + {name:'photo_id',type:'int'}, + {name:'view_image_id',type:'int'}, + {name:'thumb_photo_id',type:'int'}, + {name:'caption'}, + {name:'shortcaption'}, + {name:'path'}, + {name:'story'}, + {name:'fullimage_path'}, + {name:'shadowbox'} + ] + }) + return store; + }, + + // do a form submit for a given action + formSubmit : function(action, extform, waitmsg, params, reset, success, failure, scope) { + + switch(action) { + case 'addfolder': + var url = this.packageurl+"folder-add" + break; + case 'editfolder': + var url = this.packageurl+"folder-edit" + break; + case 'addalbum': + var url = this.packageurl+"album-add" + break; + case 'editalbum': + var url = this.packageurl+"album-edit" + break; + case 'editphoto': + var url = this.packageurl+"photo-edit" + break; + } + + if (url) { + extform.submit({ + url:url, + waitMsg:waitmsg, + params:params, + scope:scope, + success:success, + failure:failure + }) + } + }, + + // executes the action thru an ajax call + + doAction : function(action,successFn, failureFn, callbackFn, paramsObj, scope) { + + var url = null; + + switch(action) { + case 'deletefolder': + url = this.packageurl + 'folder-delete'; + break; + case 'deletealbum': + url = this.packageurl + 'album-delete'; + break; + case 'deletephoto': + url = this.packageurl + 'photo-delete'; + break; + case 'getonephoto': + url = this.xmlhttpurl + 'get-onephoto'; + break; + case 'getnextobjid': + url = this.xmlhttpurl + 'nextobjid'; + break; + case 'movephoto': + url = this.xmlhttpurl + 'move-photos'; + break; + case 'movenode': + url = this.xmlhttpurl + 'move-node'; + break; + } + + if(url) { + + var config = { + url:url, + success: successFn, + failure: failureFn, + params: paramsObj + } + + if(callbackFn) { config.callback = callbackFn } + if(successFn) { config.success = successFn } + if(failureFn) { config.failure = failureFn } + if(scope) { config.scope = scope } + + Ext.Ajax.request(config) + + } + + } + +} + +/******** Create a DragZone instance for our JsonView *************/ + +ImageDragZone = function(view, config){ + this.view = view; + ImageDragZone.superclass.constructor.call(this, view.getEl(), config); +}; +Ext.extend(ImageDragZone, Ext.dd.DragZone, { + // We don't want to register our image elements, so let's + // override the default registry lookup to fetch the image + // from the event instead + getDragData : function(e){ + var target = e.getTarget('.thumb-wrap'); + if(target){ + var view = this.view; + if(e.ctrlKey == false) { + if(!view.isSelected(target)){ + view.onClick(e); + } + } + var selNodes = view.getSelectedNodes(); + var dragData = { + nodes: selNodes + }; + + if(selNodes.length == 1){ + dragData.ddel = target.firstChild; + dragData.single = true; + }else{ + var div = document.createElement('div'); // create the multi element drag "ghost" + div.className = 'multi-proxy'; + for(var i = 0, len = selNodes.length; i < len; i++){ + var proxy_node = selNodes[i].firstChild.cloneNode(true); + Ext.get(proxy_node).setSize(50,50,false); + div.appendChild(proxy_node); // image nodes only + if((i+1) % 3 == 0){ + div.appendChild(document.createElement('br')); + } + } + var count = document.createElement('div'); // selected image count + count.innerHTML = i + ' images selected'; + Ext.get(count).setStyle('clear','both'); + div.appendChild(count); + + dragData.ddel = div; + dragData.multi = true; + } + return dragData; + } + return false; + }, + + // this method is called by the TreeDropZone after a node drop + // to get the new tree node (there are also other way, but this is easiest) + getTreeNode : function(){ + var treeNodes = []; + var nodeData = this.view.getRecords(this.dragData.nodes); + for(var i = 0, len = nodeData.length; i < len; i++){ + var data = nodeData[i].data; + treeNodes.push(new Ext.tree.TreeNode({ + text: data.name, + icon: '../view/'+data.url, + data: data, + leaf:true, + cls: 'image-node' + })); + } + return treeNodes; + }, + + // the default action is to "highlight" after a bad drop + // but since an image can't be highlighted, let's frame it + afterRepair:function(){ + for(var i = 0, len = this.dragData.nodes.length; i < len; i++){ + Ext.fly(this.dragData.nodes[i]).frame('#8db2e3', 1); + } + this.dragging = false; + }, + + // override the default repairXY with one offset for the margins and padding + getRepairXY : function(e){ + if(!this.dragData.multi){ + var xy = Ext.Element.fly(this.dragData.ddel).getXY(); + xy[0]+=3;xy[1]+=3; + return xy; + } + return false; + } +}); + + +/*** ajaxpa class ****************/ + +ajaxpa = function(configObj) { + + // ****** properties ******** + + this.config = null; + this.layout = null; + this.xmlhttpurl = '/ajaxpa/xmlhttp/'; + this.shadowbox_gallery = []; + + this.genericErrorFn = function() { + Ext.Msg.alert('Error','Sorry, an error occurred. Please try again later.'); + } + + this.restore_window = function() { + window.focus(); + this.refreshTreenode(); + } + + + // ****** initialize ******** + + this.initObj = function() { + + // prevent users from dropping stuff into this page + // this will prevent users from accidentally loading images when trying to drag and drop images for upload + if(!Ext.isIE) { window.addEventListener('dragdrop', function(event) { event.stopPropagation() }, false) } + if(Ext.isSafari) { window.addEventListener('dragover', function(event) { event.returnValue=false; }, false) } + + if(configObj) { + this.config = configObj; + if(this.config.xmlhttpurl) { + this.xmlhttpurl = this.config.xmlhttpurl; + } + } + + + if (this.config.user_id != 0) { + + this.thumbTemplate = new Ext.XTemplate( + '<tpl for=".">', + '<div class="thumb-wrap" id="wrap{photo_id}">', + '<div class="thumb" id="thumb{photo_id}" style="width:150px;height:110px;background:url({path}) no-repeat center center" ', + '<tpl if="story">', + 'ext:qtip="{story}"', + '</tpl>', + '></div>', + '<div id="caption-{photo_id}" class="img_caption" ext:qtip="{caption}">{shortcaption}</div>', + '<div id="tools-{photo_id}" class="img_tools" style="visibility:hidden">', + '<img id="view-{photo_id}" ext:qtip="View Photo" class="img_view" src="/resources/ajaxhelper/icons/magnifier.png" border=0 /> ', + '<img id="downoad-{photo_id}" ext:qtip="Download Photo" class="img_download" src="/resources/ajaxhelper/icons/arrow_down.png" border=0 /> ', + '<img id="edit-{photo_id}" ext:qtip="Edit Properties" class="img_edit" src="/resources/ajaxhelper/icons/image_edit.png" border=0 /> ', + '<img id="delete-{photo_id}" ext:qtip="Delete" class="img_delete"src="/resources/ajaxhelper/icons/cross.png" border=0 />', + '</div></div>', + '</tpl>', + '<div class="x-clear"></div>' + ) + + } else { + + this.thumbTemplate = new Ext.XTemplate( + '<tpl for=".">', + '<div class="thumb-wrap" id="wrap{photo_id}">', + '<div class="thumb" id="thumb{photo_id}" style="width:150px;height:110px;background:url({path}) no-repeat center center" ', + '<tpl if="story">', + 'ext:qtip="{story}"', + '</tpl>', + '></div>', + '<div id="caption-{photo_id}" class="img_caption" ext:qtip="{caption}">{shortcaption}</div>', + '<div id="tools-{photo_id}" ext:qtip="View Photo" class="img_tools" style="visibility:hidden;text-align:right">', + '<img id="view-{photo_id}" ext:qtip="Download Photo" class="img_download" src="/resources/ajaxhelper/icons/magnifier.png" border=0 />', + '</div></div>', + '</tpl>', + '<div class="x-clear"></div>' + ) + + } + + // instantiate core object with access to back-end functions + this.paCore = new paCore(this.config.package_id, this.xmlhttpurl, this.config.package_url); + + this.photoStore = this.paCore.createPhotoStore(this); + + this.photoStore.on('load',function(store,records) { + this.shadowbox_gallery = []; + for (var x=0; x<records.length; x++) { + this.shadowbox_gallery.push(records[x].get('shadowbox')); + } + },this); + + // initialize tooltips + Ext.QuickTips.init(); + + // initialize shadowbox + Shadowbox.init({ + handleOversize:'drag', + skipSetup:true + }); + + this.initLayout(); + } + + Ext.onReady(this.initObj,this,true); + +} + +ajaxpa.prototype = { + + // create the layout ui for ajaxpa + + initLayout : function() { + + /* Load the UI in document.body if a layoutdiv is not provided */ + + var layoutitems = [this.createCenter(),this.createNav()] + + if (this.config != null && this.config.layoutdiv) { + + Ext.get(this.config.layoutdiv).setHeight(500,false); + Ext.get(this.config.layoutdiv).update(""); + + this.layout = new Ext.Panel({ + id:"pa-ui", + layout:'border', + applyTo:this.config.layoutdiv, + monitorResize:true, + items: layoutitems + }) + + } else { + + this.layout = new Ext.Viewport({ + id:"pa-ui", + layout:'border', + items: layoutitems + }); + + } + + var dragZone = new ImageDragZone(Ext.getCmp('pa-thumbsview-data'), {containerScroll:true,ddGroup: 'photosDD'}); + }, + + // check permissions on current node (whether album or folder), + // return 1 if user is allowed 0 for not allowed + checkPerms : function(type) { + var currentTreenode = Ext.getCmp('pa-nav').getSelectionModel().getSelectedNode(); + if(type == "read") { + return currentTreenode.attributes.attributes.read_p; + } else { + return currentTreenode.attributes.attributes.write_p; + } + }, + + // create the tree navigation + + createNav : function() { + + var rootnode = new Ext.tree.AsyncTreeNode({text:this.config.rootfolder_name, expanded:true, id:this.config.rootfolder_id, attributes:{"type":"folder","read_p":this.config.root_read_p,"write_p":this.config.root_write_p}}); + + + var loader = this.paCore.createTreeloader(); + + var newmenu = new Ext.menu.Menu({ + id:'newmenu', + items:[ + {id:"menu_newfolder",text:acs_lang_text.folder || 'Folder',icon: '/resources/ajaxhelper/icons/folder.png', cls : 'x-btn-text-icon', handler:this.addTreenode.createDelegate(this,['folder']) }, + {id:"menu_newalbum",text:acs_lang_text.album || 'Album',icon: '/resources/ajaxhelper/icons/folder_picture.png', cls : 'x-btn-text-icon', handler:this.addTreenode.createDelegate(this,['album']) }, + {id:"menu_newphoto",text:acs_lang_text.photo || 'Photo',icon: '/resources/ajaxhelper/icons/picture.png', cls : 'x-btn-text-icon', handler:this.newPhoto, scope:this } + ] + }); + + var panel = new Ext.tree.TreePanel({ + id:'pa-nav', + region:'east', + title:acs_lang_text.foldersandalbums || 'Folders & Albums', + split:true, + width: 250, + monitorResize: true, + minSize: 175, + maxSize: 400, + autoScroll:true, + ddAppendOnly:true, + animate:true, + enableDD:true, + ddGroup:'photosDD', + collapsible:true, + collapseMode:'mini', + hideCollapseTool:true, + containerScroll: true, + tbar: [ + {text: acs_lang_text.newitem || 'New', icon: '/resources/ajaxhelper/icons/add.png', cls : 'x-btn-text-icon', menu:newmenu}, + {text: acs_lang_text.edititem || 'Edit', icon: '/resources/ajaxhelper/icons/page_white_edit.png', cls : 'x-btn-text-icon', handler:this.editTreenode, scope:this}, + {text: acs_lang_text.deleteitem || 'Delete', icon: '/resources/ajaxhelper/icons/delete.png', cls : 'x-btn-text-icon', handler:this.delTreenode, scope:this} + ], + loader: loader, + root: rootnode, + listeners:{ + "nodedragover":{ + scope:this, + fn:function(e) { + + // check if user has write permissions on the node + if(e.target.attributes.attributes.write_p==0) { + e.cancel=true; + } + + // dragging a tree node + + if(e.source.tree) { + + // do not allow dropping of treenodes to albums + // an album can only have photos + + if(e.target.attributes.attributes.type=="album") { + e.cancel=true; + } + + } + + // dragging a dataview item + + if(e.source.view) { + + // do not allow dropping to folders + // photos can only be dropped into albums + + if(e.target.attributes.attributes.type=="folder") { + e.cancel=true; + } + + } + + } + }, + "nodedrop":{ + scope:this, + fn:function(e) { + + var params = {target_folder_id:e.target.id,item_id:e.data.node.id,type:e.data.node.attributes.attributes.type} + this.paCore.doAction('movenode',function() { },function() { },null,params,this); + + } + }, + "beforenodedrop":{ + scope:this, + fn:function(e) { + + // dragging a tree node + + if(e.source.tree) { + + // do not allow dropping of treenodes to albums + // an album can only have photos + + if(e.target.attributes.attributes.type=="album") { + e.cancel=true; + } + + } + + // dragging a dataview item + + if(e.source.view) { + + e.cancel=true; + + if(e.target.attributes.attributes.type=="album") { + + e.dropStatus=true; + + // NOTE : we need to handle the move here + // because nodedrop does not fire if you drop a photo + + var image_ids = []; + + for(var x=0;x<e.data.nodes.length;x++) { + image_ids.push(e.data.nodes[x].id.substring(4,e.data.nodes[x].id.length)); + } + + var params = {target_album_id:e.target.id,image_ids:image_ids} + + var success = function() { + // reload the dataview + this.photoStore.reload(); + } + + var failure = this.genericErrorFn; + + this.paCore.doAction('movephoto',success,failure,null,params,this); + } + + } + } + } + } + + }); + + rootnode.on("expand",function() { panel.fireEvent("click",rootnode) } ,this,{single:true}); + + panel.on("click",this.loadPhotos,this) + panel.on("render",function() { + if(this.config.user == 0) { + panel.getTopToolbar().hide(); + } + },this) + + newmenu.on("beforeshow",function() { + var selectednode = panel.getSelectionModel().getSelectedNode(); + var type = selectednode.attributes.attributes.type; + if(type == 'folder') { + newmenu.items.items[0].enable(); + newmenu.items.items[1].enable(); + newmenu.items.items[2].disable(); + } else { + newmenu.items.items[0].disable(); + newmenu.items.items[1].disable(); + newmenu.items.items[2].enable(); + } + }); + + return panel; + + }, + + // create the photos dataview + + createCenter : function() { + + var tbar = [ + {text: acs_lang_text.collection || 'Add a collection of photos to this album' , icon: '/resources/ajaxhelper/icons/add.png', cls : 'x-btn-text-icon', handler:function() { + // var currentTreenode = Ext.getCmp('pa-nav').getSelectionModel().getSelectedNode(); + + // open new window to upload applet + // var newWin = window.open("/ajaxpa/java-upload/applet?album_id="+currentTreenode.id+"&package_id="+this.config.package_id,'ddUpload','width=300,height=280,status=0,location=0,toolbar=0,resizable=0'); + // newWin.screenX=screen.width-300; + // newWin.screenY=screen.height-200; + + if(!this.checkPerms('write')) { + Ext.MessageBox.alert('Permission Denied','Sorry you do not have permission to perform this action.') + return; + } + + var extwindow = this.createOrGetWindow('pa-win-newcollection'); + var formname = 'new_photo_collection_form'; + var currentform = Ext.getCmp(formname); + + var successFn = function(o) { + + Ext.getCmp('new_photo_collection_formid').setValue('photos_upload'); + + var album_id = this.getSelectedTreeNodeId(); + + Ext.getCmp('new_photo_collection_albumid').setValue(album_id); + Ext.getCmp('new_photo_collection_photoid').setValue(o.responseText); + + // set the return_url + Ext.getCmp('new_photo_collection_returnurl').setValue(this.xmlhttpurl+'formok'); + + extwindow.show(); + }; + + var submitFn = function() { + if (currentform.getForm().isValid()) { + currentform.getForm().submit({ + url:this.config.package_url+'photos-add-2', + waitMsg:'Uploading photo...', + reset:true, + scope:this, + success: function(form,action) { + if(action.result) { + // reload center panel + this.photoStore.reload(); + // hide the window + extwindow.close(); + + } else { + Ext.MessageBox.alert('Error','Sorry an error occured. Make sure you have filled up all required fields.') + } + }, + failure: function(form,action) { + if(action.result) { + Ext.MessageBox.alert('Error',action.result.info) + } else { + Ext.MessageBox.alert('Error','Error occurred. Try again later') + } + } + }) + } + }; + + + currentform.getForm().reset(); + + // change url to folder_edit + currentform.buttons[0].setHandler(submitFn,this); + currentform.buttons[0].setText('Upload'); + + // use ajax to get retrieve info about the album or folder + this.paCore.doAction('getnextobjid',successFn,this.genericErrorFn,null,null,this); + + }, scope:this} + ] + + tbar.push({text:'Download selected Photos', tooltip:'Download selected photos. Press CTRL and then click on the photos you want to select',icon: '/resources/ajaxhelper/icons/arrow_down.png', cls : 'x-btn-text-icon', handler:function() { + + var selectednodes = Ext.getCmp('pa-thumbsview-data').getSelectedNodes(); + + if(selectednodes.length<1) { + + Ext.Msg.alert('Error','Please select one or more photos to download'); + + } else { + + var photoid_arr=[]; + + for(var x=0;x<selectednodes.length;x++) { + photoid_arr.push(selectednodes[x].id.substring(4)); + } + + window.location.href='/ajaxpa/batchdownload/?photo_ids='+photoid_arr; + + } + }, scope:this}) + + var thumbspanel = new Ext.Panel({ + id:'pa-thumbsview', + layout:'fit', + plain:true, + titlebar:false, + tbar:tbar, bbar:new Ext.PagingToolbar({ + pageSize: parseInt(this.config.pagesize), + displayInfo:true, + emptyMsg:'No photos found', + store:this.photoStore}), + listeners: { + 'render': { + fn:function(panel) { + panel.body.addListener('click',function(panel,e) { + var id_arr = e.id.split('-'); + var id = id_arr[1]; + switch (e.className) { + case "img_view": + var record = this.photoStore.getById(id); + var n = this.photoStore.indexOf(record); + Shadowbox.open(this.shadowbox_gallery); + Shadowbox.change(n); + break; + case "img_edit": + this.editPhoto(id); + break; + case "img_delete": + this.delPhoto(id); + break; + case "img_download": + var record = this.photoStore.getById(id); + window.location.href='/ajaxpa/download/'+record.get('view_image_id'); + break; + } + },this) + },scope:this + } + }, items: new Ext.DataView({ + id:'pa-thumbsview-data', + store:this.photoStore, + tpl:this.thumbTemplate, + style:'overflow:auto', + overClass:'x-view-over', + multiSelect:true, + itemSelector:'div.thumb-wrap', + loadingText:'<div class="largetext">Fetching photos . . .</div>', + emptyText: '<div class="largetext">No photos found</div>', + plugins: new Ext.DataView.DragSelector({dragSafe:true}), + prepareData: function(data){ + data.caption = Ext.util.Format.ellipsis(data.caption, 20); + return data; + }, listeners: { + 'mouseenter': { + fn:function(view,index,node,e) { + var id = Ext.get(node).id.substring(4,Ext.get(node).id.length); + Ext.get('tools-'+id).show(); + },scope:this + }, 'mouseleave' : { + fn:function(view,index,node,e) { + var id = Ext.get(node).id.substring(4,Ext.get(node).id.length); + Ext.get('tools-'+id).hide(); + },scope:this + }, 'dblclick' : { + fn:function(view,index,node,e) { + var id = Ext.get(node).id.substring(4,Ext.get(node).id.length); + var record = this.photoStore.getById(id); + var n = this.photoStore.indexOf(record); + Shadowbox.open(this.shadowbox_gallery); + Shadowbox.change(n); + },scope:this + } + } + }) + }); + + var panel = new Ext.Panel({ + id:'pa-card', + layout:'card', + region:'center', + activeItem:0, + items: [ + {xtype:'panel',html:'<div class="largetext">Click on an album to view photos</div>'}, + thumbspanel + ] + }); + + return panel; + }, + + // if the tree item is an album, load the photos + + loadPhotos : function(node,e) { + + // the current album we are in + if(node.attributes.attributes.type == "album") { + + Ext.getCmp('pa-card').layout.setActiveItem(1); + this.photoStore.baseParams={album_id:node.id,package_id:this.config.package_id}; + this.photoStore.load({params:{start:0,limit:parseInt(this.config.pagesize)}}); + + } else { + Ext.getCmp('pa-card').layout.setActiveItem(0); + } + + }, + + // reload the currently selected node + + refreshTreenode : function() { + + var currentTreenode = Ext.getCmp('pa-nav').getSelectionModel().getSelectedNode(); + currentTreenode.fireEvent("click",currentTreenode); + + }, + + // delete a node from the tree + + delTreenode : function() { + + if(!this.checkPerms('write')) { + Ext.MessageBox.alert('Permission Denied','Sorry you do not have permission to perform this action.') + return; + } + + var treepanel = Ext.getCmp('pa-nav'); + var currentTreenode = treepanel.getSelectionModel().getSelectedNode(); + var treenodeType = currentTreenode.attributes.attributes.type; + + if (treepanel.getRootNode().id == currentTreenode.id) { + + Ext.Msg.alert('Error','Sorry, you can not delete the root folder'); + + } else { + + if (treenodeType === "folder") { + var action = 'deletefolder'; + var params = { confirmed_p:'t', folder_id:currentTreenode.id, return_url:this.xmlhttpurl+'formok'}; + } + + if (treenodeType === "album") { + var action = 'deletealbum'; + var params = { confirmed_p:'t', album_id:currentTreenode.id, return_url:this.xmlhttpurl+'formok'}; + } + + var success = function(o) { + var parentnode = currentTreenode.parentNode; + parentnode.fireEvent("click",parentnode); + parentnode.removeChild(currentTreenode); + } + + var failure = this.genericErrorFn; + + if (action) { + Ext.MessageBox.confirm('Delete','Are you sure you want to delete <b>'+currentTreenode.text+'</b> ?',function(choice) { + if (choice === "yes") { + this.paCore.doAction(action,success,failure,null,params,this); + } + },this) + } + + } + }, + + // add a folder or album to the tree + + addTreenode : function(nodetype) { + + if(!this.checkPerms('write')) { + Ext.MessageBox.alert('Permission Denied','Sorry you do not have permission to perform this action.') + return; + } + + if(nodetype === "folder") { + var windowid = 'pa-win-newfolder'; + var formname = 'new_folder_form'; + var formaction = 'addfolder'; + var windowtitle = acs_lang_text.newfolder || 'New Folder'; + var successFn = function(o) { + + Ext.getCmp('new_folder_formid').setValue('folder_add'); + + // get the parent_id of this new folder + // parent_id is the id of the currently selected node in the tree + var parent_id = this.getSelectedTreeNodeId(); + + // set the parent_id hidden field + Ext.getCmp('new_folder_parentid').setValue(parent_id); + + // set the folder_id hidden field + Ext.getCmp('new_folder_folderid').setValue(o.responseText); + + // set the return_url + Ext.getCmp('new_folder_returnurl').setValue(this.xmlhttpurl+'load-onenode?type=folder&node_id='+o.responseText); + + // show the window + extwindow.show(); + + } + var waitMsg = 'Creating folder'; + } + + if(nodetype === "album") { + var windowid = 'pa-win-newalbum'; + var formname = 'new_album_form'; + var formaction = 'addalbum'; + var windowtitle = acs_lang_text.newalbum || 'New Album'; + var successFn=function(o) { + + Ext.getCmp('new_album_formid').setValue('album_add'); + + // get the parent_id of this new folder + // parent_id is the id of the currently selected node in the tree + var parent_id = this.getSelectedTreeNodeId(); + + // set the parent_id hidden field + Ext.getCmp('new_album_parentid').setValue(parent_id); + + // set the folder_id hidden field + Ext.getCmp('new_album_albumid').setValue(o.responseText); + + // set the return_url + Ext.getCmp('new_album_returnurl').setValue(this.xmlhttpurl+'load-onenode?type=album&node_id='+o.responseText); + + // show the window + extwindow.show(); + + } + var waitMsg = 'Creating album'; + } + + var extwindow = this.createOrGetWindow(windowid); + var currentform = Ext.getCmp(formname); + + var success =function(form,action) { + if(action.result) { + + if(action.result.info != "null") { + // create and select the new tree node + this.addTreenodeEl(action.result.info); + } else { + Ext.MessageBox.alert('Error','Sorry an error occured. Please try again later.') + } + + // hide the window + extwindow.hide(); + + } else { + Ext.MessageBox.alert('Error','Sorry an error occured. Make sure you have filled up all required fields.') + } + } + + var failure = function(form,action) { + if(action.result) { + Ext.MessageBox.alert('Error',action.result.info) + } else { + Ext.MessageBox.alert('Error','Error occurred. Try again later') + } + } + + var submitFn=function() { + this.paCore.formSubmit(formaction, currentform.getForm(), waitMsg, null, true, success, failure, this) + } + + + if(extwindow) { + + extwindow.setTitle(windowtitle); + + currentform.buttons[0].setHandler(submitFn,this) + currentform.buttons[0].setText('Create'); + + // use ajax to get a new object_id, before we show the window + this.paCore.doAction('getnextobjid',successFn,this.genericErrorFn,null,null,this); + + } + + }, + + // add a node with the given json object properties to the tree + + addTreenodeEl : function(configobj) { + var treepanel =Ext.getCmp('pa-nav'); + var currentTreeNode = treepanel.getSelectionModel().getSelectedNode(); + var nodespec = new Ext.tree.TreeNode(configobj); + var newnode = currentTreeNode.appendChild(nodespec); + treepanel.getSelectionModel().select(newnode); + newnode.loaded=true; + newnode.fireEvent("click",newnode); + }, + + // window to edit folder info + + editTreenode : function() { + + if(!this.checkPerms('write')) { + Ext.MessageBox.alert('Permission Denied','Sorry you do not have permission to perform this action.') + return; + } + + var currentTreenode = Ext.getCmp('pa-nav').getSelectionModel().getSelectedNode(); + + if (currentTreenode) { + + var treenodeType = currentTreenode.attributes.attributes.type; + var treenodeId = currentTreenode.id; + + if (treenodeType === "folder") { + + var windowid = 'pa-win-newfolder'; + var formname = 'new_folder_form'; + var windowtitle = acs_lang_text.editfolder || 'Edit Folder'; + var formaction = 'editfolder'; + var successFn = function(o) { + var resultObj = Ext.decode(o.responseText); + if(resultObj.success) { + Ext.getCmp('new_folder_formid').setValue('folder_edit'); + Ext.getCmp('new_folder_folderid').setValue(resultObj.info.id); + Ext.getCmp('new_folder_name').setValue(resultObj.info.text); + Ext.getCmp('new_folder_desc').setValue(resultObj.info.qtip); + Ext.getCmp('new_folder_returnurl').setValue(this.xmlhttpurl+'load-onenode?type=folder&node_id='+resultObj.info.id); + extwindow.show(); + } + } + var waitMsg = 'Updating folder ...'; + } + + if (treenodeType === "album") { + + var windowid = 'pa-win-newalbum'; + var formname = 'new_album_form'; + var windowtitle = acs_lang_text.editalbum || 'Edit Album'; + var formaction = 'editalbum'; + var successFn = function(o) { + var resultObj = Ext.decode(o.responseText); + if(resultObj.success) { + Ext.getCmp('new_album_formid').setValue('edit_album'); + Ext.getCmp('new_album_albumid').setValue(resultObj.info.id); + Ext.getCmp('new_album_name').setValue(resultObj.info.text); + Ext.getCmp('new_album_desc').setValue(resultObj.info.qtip); + Ext.getCmp('new_album_story').setValue(resultObj.info.attributes.story); + Ext.getCmp('new_album_photographer').setValue(resultObj.info.attributes.photographer); + Ext.getCmp('new_album_revisionid').setValue(resultObj.info.attributes.revision_id); + Ext.getCmp('new_album_prevrevisionid').setValue(resultObj.info.attributes.previous_revision); + Ext.getCmp('new_album_returnurl').setValue(this.xmlhttpurl+'load-onenode?type=album&node_id='+resultObj.info.id); + extwindow.show(); + } + } + var waitMsg = 'Updating album ...'; + } + + var extwindow = this.createOrGetWindow(windowid); + var currentform = Ext.getCmp(formname); + + var success = function(form,action) { + if(action.result) { + + if(action.result.info != "null") { + // create and select the new tree node + this.editTreenodeEl(action.result.info); + } else { + Ext.MessageBox.alert('Error','Sorry an error occured updating. Please try again later.') + } + + // hide the window + extwindow.hide(); + + } else { + Ext.MessageBox.alert('Error','Sorry an error occured. Make sure you have filled up all required fields.') + } + } + + var failure = function(form,action) { + if(action.result) { + Ext.MessageBox.alert('Error',action.result.info) + } else { + Ext.MessageBox.alert('Error','Error occurred. Try again later') + } + } + + var submitFn=function() { + this.paCore.formSubmit(formaction, currentform.getForm(), waitMsg, null, true, success, failure, this) + } + + if(extwindow) { + + // change window title to edit + extwindow.setTitle(windowtitle); + + // change url to folder_edit + currentform.buttons[0].setHandler(submitFn,this); + currentform.buttons[0].setText('Update'); + + // use ajax to get retrieve info about the album or folder + Ext.Ajax.request({ + url: this.config.xmlhttpurl + 'load-onenode', + params: {type:treenodeType,node_id:treenodeId,mode:'edit'}, + success: successFn, failure: this.genericErrorFn ,scope: this + }); + + } + + } else { + Ext.Msg.alert('Error','Please select a folder or album'); + } + + }, + + // edit the node + + editTreenodeEl : function(configobj) { + var currentTreeNode = Ext.getCmp('pa-nav').getSelectionModel().getSelectedNode(); + currentTreeNode.setText(configobj.text); + currentTreeNode.ui.getTextEl().setAttributeNS('ext','qtip',configobj.qtip); + }, + + // return the id of the selected treenode + + getSelectedTreeNodeId : function() { + var id = Ext.getCmp('pa-nav').getSelectionModel().getSelectedNode().id; + return id + }, + + // create or get a reference to a popup window + + createOrGetWindow : function(windowid) { + + var extwindow = Ext.getCmp(windowid); + + if(!extwindow) { + + switch (windowid) { + + case "pa-win-newcollection": + + extwindow = new Ext.Window({ + id:'pa-win-newphotocollection', + title:acs_lang_text.collection || 'Add a collection of photos to this album', + width:290, + height:140, + autoScroll:true, + modal:true, + draggable:false, + resizable:false, + items:[ + {id:'new_photo_collection_form', + xtype:'form', + titlebar:false, + plain:true, + autoHeight:true, + bodyStyle:{'padding':'5px'}, + labelAlign:'top', + method:'post', + fileUpload:true, + items:[ + {id:'new_photo_collection_formid',xtype:'hidden',name:'form:id',value:'photos_upload'}, + {id:'new_photo_collection_formode',xtype:'hidden',name:'form:mode',value:'edit'}, + {id:'new_photo_collection_returnurl',xtype:'hidden',name:'return_url',value:''}, + {id:'new_photo_collection_photoid',xtype:'hidden',name:'photo_id',value:''}, + {id:'new_photo_collection_albumid',xtype:'hidden',name:'album_id',value:''}, + {id:'new_photo_collection_file', + xtype:'fileuploadfield', + name:'upload_file', + fieldLabel:'Choose a tar or zip file to upload', + allowBlank:false, + anchor:'95%', + buttonCfg: { + text: '', + iconCls: 'upload-icon' + } + }], + buttons: [{ + text: 'Upload', + name:'formbutton:ok', + scope:this, + icon:'/resources/ajaxhelper/icons/accept.png', + cls:'x-btn-text-icon' + }, { + text: 'Close', + handler: function(){ + Ext.getCmp('new_photo_collection_form').getForm().reset(); + Ext.getCmp('pa-win-newphotocollection').close(); + },scope:this, + icon:'/resources/ajaxhelper/icons/cross.png', + cls:'x-btn-text-icon' + }]} + ] + }) + + break; + + case "pa-win-newphoto" : + + extwindow = new Ext.Window({ + id:'pa-win-newphoto', + title:acs_lang_text.uploadphoto || 'Upload a New Photo', + width:290, + height:360, + autoScroll:true, + closeAction:'hide', + modal:true, + draggable:false, + resizable:false, + items:[ + {id:'new_photo_form', + xtype:'form', + titlebar:false, + plain:true, + autoHeight:true, + bodyStyle:{'padding':'5px'}, + labelAlign:'top', + method:'post', + fileUpload:true, + items:[ + {id:'new_photo_formid',xtype:'hidden',name:'form:id',value:'photo_upload'}, + {id:'new_photo_formode',xtype:'hidden',name:'form:mode',value:'edit'}, + {id:'new_photo_returnurl',xtype:'hidden',name:'return_url',value:''}, + {id:'new_photo_photoid',xtype:'hidden',name:'photo_id',value:''}, + {id:'new_photo_albumid',xtype:'hidden',name:'album_id',value:''}, + {id:'new_photo_file', + xtype:'fileuploadfield', + name:'upload_file', + fieldLabel:'Photo', + allowBlank:false, + emptyText:'Choose a photo to upload', + anchor:'95%', + buttonCfg: { + text: '', + iconCls: 'upload-icon' + } + }, + {id:'new_photo_caption',xtype:'textfield',name:'caption',fieldLabel:'Caption',width:220}, + {id:'new_photo_desc',xtype:'textarea',name:'description',fieldLabel:'Description',width:220}, + {id:'new_photo_story',xtype:'textarea',name:'story',fieldLabel:'Story',width:220}], + buttons: [{ + text: 'Upload', + name:'formbutton:ok', + scope:this, + icon:'/resources/ajaxhelper/icons/accept.png', + cls:'x-btn-text-icon' + }, { + text: 'Close', + handler: function(){ + Ext.getCmp('new_photo_form').getForm().reset(); + Ext.getCmp('pa-win-newphoto').hide(); + },scope:this, + icon:'/resources/ajaxhelper/icons/cross.png', + cls:'x-btn-text-icon' + }]} + ] + }); + + break; + + case "pa-win-editphoto" : + + extwindow = new Ext.Window({ + id:'pa-win-editphoto', + title:acs_lang_text.editphoto || 'Edit Photo Attributes', + width:290, + height:360, + autoScroll:true, + closeAction:'hide', + modal:true, + draggable:false, + resizable:false, + listeners:{ + "show":{ + scope:this, + fn:function() { + Ext.getCmp('edit_photo_title').focus(false,10); + } + } + }, + items:[ + {id:'edit_photo_form', + xtype:'form', + titlebar:false, + plain:true, + autoHeight:true, + bodyStyle:{'padding':'5px'}, + labelAlign:'top', + method:'post', + items:[ + {id:'edit_photo_formid',xtype:'hidden',name:'form:id',value:'edit_photo'}, + {id:'edit_photo_formode',xtype:'hidden',name:'form:mode',value:'edit'}, + {id:'edit_photo_returnurl',xtype:'hidden',name:'return_url',value:''}, + {id:'edit_photo_photoid',xtype:'hidden',name:'photo_id',value:''}, + {id:'edit_photo_revisionid',xtype:'hidden',name:'revision_id',value:''}, + {id:'edit_photo_prevrevisionid',xtype:'hidden',name:'previous_revision',value:''}, + {id:'edit_photo_title',xtype:'textfield',name:'title',fieldLabel:'Title',width:220}, + {id:'edit_photo_caption',xtype:'textfield',name:'caption',fieldLabel:'Caption',width:220}, + {id:'edit_photo_desc',xtype:'textarea',name:'description',fieldLabel:'Description',width:220}, + {id:'edit_photo_story',xtype:'textarea',name:'story',fieldLabel:'Story',width:220}], + buttons: [{ + text: 'Update', + name:'formbutton:ok', + scope:this, + icon:'/resources/ajaxhelper/icons/accept.png', + cls:'x-btn-text-icon' + }, { + text: 'Close', + handler: function(){ + Ext.getCmp('edit_photo_form').getForm().reset(); + Ext.getCmp('pa-win-editphoto').hide(); + },scope:this, + icon:'/resources/ajaxhelper/icons/cross.png', + cls:'x-btn-text-icon' + }]} + ] + }); + + break; + + case "pa-win-newfolder": + + extwindow = new Ext.Window({ + id:'pa-win-newfolder', + title: acs_lang_text.newfolder || 'New Folder', + width:290, + height:220, + autoScroll:true, + closeAction:'hide', + modal:true, + draggable:false, + resizable:false, + items:[ + {id:'new_folder_form', + xtype:'form', + titlebar:false, + plain:true, + autoHeight:true, + bodyStyle:{'padding':'5px'}, + labelAlign:'top', + method:'post', + items:[ + {id:'new_folder_name',xtype:'textfield',name:'label',fieldLabel:'Folder Name',width:220,allowBlank:false}, + {id:'new_folder_desc',xtype:'textarea',name:'description',fieldLabel:'Folder Description',width:220}, + {id:'new_folder_formid',xtype:'hidden',name:'form:id',value:'folder_add'}, + {id:'new_folder_formode',xtype:'hidden',name:'form:mode',value:'edit'}, + {id:'new_folder_returnurl',xtype:'hidden',name:'return_url',value:''}, + {id:'new_folder_folderid',xtype:'hidden',name:'folder_id',value:''}, + {id:'new_folder_parentid',xtype:'hidden',name:'parent_id',value:''}], + buttons: [{ + text: 'Create Folder', + name:'formbutton:ok', + scope:this, + icon:'/resources/ajaxhelper/icons/accept.png', + cls:'x-btn-text-icon' + }, { + text: 'Close', + handler: function(){ + Ext.getCmp('new_folder_form').getForm().reset(); + Ext.getCmp('pa-win-newfolder').hide(); + },scope:this, + icon:'/resources/ajaxhelper/icons/cross.png', + cls:'x-btn-text-icon' + }]} + ],listeners:{ + "show":{ + scope:this, + fn:function() { + Ext.getCmp('new_folder_name').focus(false,10); + } + } + } + }); + + break; + + case "pa-win-newalbum": + + extwindow = new Ext.Window({ + id:'pa-win-newalbum', + title:acs_lang_text.newalbum || 'New Abum', + width:290, + autoHeight:true, + autoScroll:true, + closeAction:'hide', + modal:true, + draggable:false, + resizable:false, + listeners:{ + "show":{ + scope:this, + fn:function() { + Ext.getCmp('new_album_name').focus(false,10); + } + } + }, items:[ + {id:'new_album_form', + xtype:'form', + titlebar:false, + plain:true, + autoHeight:true, + bodyStyle:{'padding':'5px'}, + labelAlign:'top', + method:'post', + items:[ + {id:'new_album_name',xtype:'textfield',name:'title',fieldLabel:'Album Name',width:220,allowBlank:false}, + {id:'new_album_photographer',xtype:'textfield',name:'photographer',fieldLabel:'Photographer',width:220}, + {id:'new_album_desc',xtype:'textarea',name:'description',fieldLabel:'Description',width:220}, + {id:'new_album_story',xtype:'textarea',name:'story',fieldLabel:'Album Story',width:220}, + {id:'new_album_formid',xtype:'hidden',name:'form:id',value:'album_add'}, + {id:'new_album_formmode',xtype:'hidden',name:'form:mode',value:'edit'}, + {id:'new_album_returnurl',xtype:'hidden',name:'return_url',value:''}, + {id:'new_album_albumid',xtype:'hidden',name:'album_id',value:''}, + {id:'new_album_revisionid',xtype:'hidden',name:'revision_id',value:''}, + {id:'new_album_prevrevisionid',xtype:'hidden',name:'previous_revision',value:''}, + {id:'new_album_parentid',xtype:'hidden',name:'parent_id',value:''}], + buttons: [{ + text: 'Create Album', + name:'formbutton:ok', + scope:this, + icon:'/resources/ajaxhelper/icons/accept.png', + cls:'x-btn-text-icon' + }, { + text: 'Close', + handler: function(){ + Ext.getCmp('new_album_form').getForm().reset(); + Ext.getCmp('pa-win-newalbum').hide(); + },scope:this, + icon:'/resources/ajaxhelper/icons/cross.png', + cls:'x-btn-text-icon' + }] + } + ] + }); + + break; + + } + } + + return extwindow; + + }, + + // upload a new photo + + newPhoto : function() { + + if(!this.checkPerms('write')) { + Ext.MessageBox.alert('Permission Denied','Sorry you do not have permission to perform this action.') + return; + } + + var extwindow = this.createOrGetWindow('pa-win-newphoto'); + var formname = 'new_photo_form'; + var currentform = Ext.getCmp(formname); + + var successFn = function(o) { + + Ext.getCmp('new_photo_formid').setValue('photo_upload'); + + var album_id = this.getSelectedTreeNodeId(); + + Ext.getCmp('new_photo_albumid').setValue(album_id); + Ext.getCmp('new_photo_photoid').setValue(o.responseText); + + // set the return_url + Ext.getCmp('new_photo_returnurl').setValue(this.xmlhttpurl+'formok'); + + extwindow.show(); + }; + + var submitFn = function() { + if (currentform.getForm().isValid()) { + currentform.getForm().submit({ + url:this.config.package_url+'photo-add-2', + waitMsg:'Uploading photo...', + reset:true, + scope:this, + success: function(form,action) { + if(action.result) { + // reload center panel + this.photoStore.reload(); + // hide the window + extwindow.hide(); + + } else { + Ext.MessageBox.alert('Error','Sorry an error occured. Make sure you have filled up all required fields.') + } + }, + failure: function(form,action) { + if(action.result) { + Ext.MessageBox.alert('Error',action.result.info) + } else { + Ext.MessageBox.alert('Error','Error occurred. Try again later') + } + } + }) + } + }; + + + currentform.getForm().reset(); + + // change url to folder_edit + currentform.buttons[0].setHandler(submitFn,this); + currentform.buttons[0].setText('Upload'); + + // use ajax to get retrieve info about the album or folder + this.paCore.doAction('getnextobjid',successFn,this.genericErrorFn,null,null,this); + + }, + + // delete a photo + + delPhoto : function(id) { + Ext.MessageBox.confirm('Delete','Are you sure you want to delete this photo?',function(choice) { + if (choice === "yes") { + var success=function(o) {this.photoStore.reload()}; + var failure=this.genericErrorFn; + this.paCore.doAction('deletephoto',success,failure,null,{confirmed_p:'t',photo_id:id,return_url:this.xmlhttpurl+'formok'},this); + } + },this) + }, + + // edit photo attributes + + editPhoto : function(id) { + + var extwindow = this.createOrGetWindow('pa-win-editphoto'); + var formname = 'edit_photo_form'; + var currentform = Ext.getCmp(formname); + + var successFn = function(o) { + + var resultObj = Ext.decode(o.responseText); + + if(resultObj.success) { + Ext.getCmp('edit_photo_formid').setValue('edit_photo'); + Ext.getCmp('edit_photo_returnurl').setValue(this.xmlhttpurl+'get-onephoto?photo_id='+resultObj.info.photo_id+'&package_id='+this.config.package_id+'&mode=display'); + Ext.getCmp('edit_photo_photoid').setValue(resultObj.info.photo_id); + Ext.getCmp('edit_photo_revisionid').setValue(resultObj.info.revision_id); + Ext.getCmp('edit_photo_prevrevisionid').setValue(resultObj.info.prevrevision_id); + Ext.getCmp('edit_photo_title').setValue(resultObj.info.title); + Ext.getCmp('edit_photo_caption').setValue(resultObj.info.caption); + Ext.getCmp('edit_photo_desc').setValue(resultObj.info.description); + Ext.getCmp('edit_photo_story').setValue(resultObj.info.story); + extwindow.show(); + } + } + + var submitFn = function() { + + if (currentform.getForm().isValid()) { + + var success = function(form,action) { + if(action.result) { + + if(action.result.info != "null") { + // updte the caption of the node + Ext.get('caption-'+action.result.info.photo_id).update(action.result.info.caption); + if(action.result.info.story && action.result.info.story != "") { + var newtip = document.createAttribute('ext:qtip'); + newtip.value = action.result.info.story; + Ext.get('thumb'+action.result.info.photo_id).dom.attributes.setNamedItem(newtip); + } + } else { + Ext.MessageBox.alert('Error','Sorry an error occured trying to create your new folder. Please try again later.') + } + + // hide the window + Ext.getCmp('pa-win-editphoto').hide(); + + } else { + Ext.MessageBox.alert('Error','Sorry an error occured. Make sure you have filled up all required fields.') + } + } + + var failure = function(form,action) { + if(action.result) { + Ext.MessageBox.alert('Error',action.result.info) + } else { + Ext.MessageBox.alert('Error','Error occurred. Try again later') + } + } + + this.paCore.formSubmit('editphoto', currentfor.getForm(), 'Updating photo ....', null, true, success, failure, this) + } + }; + + // change url to folder_edit + currentform.buttons[0].setHandler(submitFn,this); + currentform.buttons[0].setText('Update'); + + // use ajax to get retrieve info about the album or folder + this.paCore.doAction('getonephoto',successFn,this.genericErrorFn,null,{photo_id:id,package_id:this.config.package_id,mode:'edit'},this); + + } +} + + Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/data-view-plugins.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/data-view-plugins.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/data-view-plugins.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,141 @@ +/* + * Ext JS Library 2.2 + * Copyright(c) 2006-2008, Ext JS, LLC. + * licensing@extjs.com + * + * http://extjs.com/license + */ + + +Ext.DataView.LabelEditor = function(cfg, field){ + Ext.DataView.LabelEditor.superclass.constructor.call(this, + field || new Ext.form.TextField({ + allowBlank: false, + growMin:90, + growMax:240, + grow:true, + selectOnFocus:true + }), cfg + ); +} + +Ext.extend(Ext.DataView.LabelEditor, Ext.Editor, { + alignment: "tl-tl", + hideEl : false, + cls: "x-small-editor", + shim: false, + completeOnEnter: true, + cancelOnEsc: true, + labelSelector: 'span.x-editable', + + init : function(view){ + this.view = view; + view.on('render', this.initEditor, this); + this.on('complete', this.onSave, this); + }, + + initEditor : function(){ + this.view.getEl().on('mousedown', this.onMouseDown, this, {delegate: this.labelSelector}); + }, + + onMouseDown : function(e, target){ + if(!e.ctrlKey && !e.shiftKey){ + var item = this.view.findItemFromChild(target); + e.stopEvent(); + var record = this.view.store.getAt(this.view.indexOf(item)); + this.startEdit(target, record.data[this.dataIndex]); + this.activeRecord = record; + }else{ + e.preventDefault(); + } + }, + + onSave : function(ed, value){ + this.activeRecord.set(this.dataIndex, value); + } +}); + + +Ext.DataView.DragSelector = function(cfg){ + cfg = cfg || {}; + var view, regions, proxy, tracker; + var rs, bodyRegion, dragRegion = new Ext.lib.Region(0,0,0,0); + var dragSafe = cfg.dragSafe === true; + + this.init = function(dataView){ + view = dataView; + view.on('render', onRender); + }; + + function fillRegions(){ + rs = []; + view.all.each(function(el){ + rs[rs.length] = el.getRegion(); + }); + bodyRegion = view.el.getRegion(); + } + + function cancelClick(){ + return false; + } + + function onBeforeStart(e){ + return !dragSafe || e.target == view.el.dom; + } + + function onStart(e){ + view.on('containerclick', cancelClick, view, {single:true}); + if(!proxy){ + proxy = view.el.createChild({cls:'x-view-selector'}); + }else{ + proxy.setDisplayed('block'); + } + fillRegions(); + view.clearSelections(); + } + + function onDrag(e){ + var startXY = tracker.startXY; + var xy = tracker.getXY(); + + var x = Math.min(startXY[0], xy[0]); + var y = Math.min(startXY[1], xy[1]); + var w = Math.abs(startXY[0] - xy[0]); + var h = Math.abs(startXY[1] - xy[1]); + + dragRegion.left = x; + dragRegion.top = y; + dragRegion.right = x+w; + dragRegion.bottom = y+h; + + dragRegion.constrainTo(bodyRegion); + proxy.setRegion(dragRegion); + + for(var i = 0, len = rs.length; i < len; i++){ + var r = rs[i], sel = dragRegion.intersect(r); + if(sel && !r.selected){ + r.selected = true; + view.select(i, true); + }else if(!sel && r.selected){ + r.selected = false; + view.deselect(i); + } + } + } + + function onEnd(e){ + if(proxy){ + proxy.setDisplayed(false); + } + } + + function onRender(view){ + tracker = new Ext.dd.DragTracker({ + onBeforeStart: onBeforeStart, + onStart: onStart, + onDrag: onDrag, + onEnd: onEnd + }); + tracker.initEl(view.el); + } +} \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/gfx/handle-left.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/gfx/handle-left.png,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/gfx/handle-right.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/gfx/handle-right.png,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/flvplayer.swf =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/flvplayer.swf,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/shadowbox.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/shadowbox.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/shadowbox.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox, no base library adapter found"}(function(){var version="2.0";var options={animate:true,animateFade:true,animSequence:"wh",flvPlayer:"flvplayer.swf",modal:false,overlayColor:"#000",overlayOpacity:0.8,flashBgColor:"#000000",autoplayMovies:true,showMovieControls:true,slideshowDelay:0,resizeDuration:0.55,fadeDuration:0.35,displayNav:true,continuous:false,displayCounter:true,counterType:"default",counterLimit:10,viewportPadding:20,handleOversize:"resize",handleException:null,handleUnsupported:"link",initialHeight:160,initialWidth:320,enableKeys:true,onOpen:null,onFinish:null,onChange:null,onClose:null,skipSetup:false,errors:{fla:{name:"Flash",url:"http://www.adobe.com/products/flashplayer/"},qt:{name:"QuickTime",url:"http://www.apple.com/quicktime/download/"},wmp:{name:"Windows Media Player",url:"http://www.microsoft.com/windows/windowsmedia/"},f4m:{name:"Flip4Mac",url:"http://www.flip4mac.com/wmv_download.htm"}},ext:{img:["png","jpg","jpeg","gif","bmp"],swf:["swf"],flv:["flv"],qt:["dv","mov","moov","movie","mp4"],wmp:["asf","wm","wmv"],qtwmp:["avi","mpg","mpeg"],iframe:["asp","aspx","cgi","cfm","htm","html","pl","php","php3","php4","php5","phtml","rb","rhtml","shtml","txt","vbs"]}};var SB=Shadowbox;var SL=SB.lib;var default_options;var RE={domain:/:\/\/(.*?)[:\/]/,inline:/#(.+)$/,rel:/^(light|shadow)box/i,gallery:/^(light|shadow)box\[(.*?)\]/i,unsupported:/^unsupported-(\w+)/,param:/\s*([a-z_]*?)\s*=\s*(.+)\s*/,empty:/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i};var cache=[];var gallery;var current;var content;var content_id="shadowbox_content";var dims;var initialized=false;var activated=false;var slide_timer;var slide_start;var slide_delay=0;var ua=navigator.userAgent.toLowerCase();var client={isStrict:document.compatMode=="CSS1Compat",isOpera:ua.indexOf("opera")>-1,isIE:ua.indexOf("msie")>-1,isIE7:ua.indexOf("msie 7")>-1,isSafari:/webkit|khtml/.test(ua),isWindows:ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1,isMac:ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1,isLinux:ua.indexOf("linux")!=-1};client.isBorderBox=client.isIE&&!client.isStrict;client.isSafari3=client.isSafari&&!!(document.evaluate);client.isGecko=ua.indexOf("gecko")!=-1&&!client.isSafari;var ltIE7=client.isIE&&!client.isIE7;var plugins;if(navigator.plugins&&navigator.plugins.length){var detectPlugin=function(plugin_name){var detected=false;for(var i=0,len=navigator.plugins.length;i<len;++i){if(navigator.plugins[i].name.indexOf(plugin_name)>-1){detected=true;break}}return detected};var f4m=detectPlugin("Flip4Mac");plugins={fla:detectPlugin("Shockwave Flash"),qt:detectPlugin("QuickTime"),wmp:!f4m&&detectPlugin("Windows Media"),f4m:f4m}}else{var detectPlugin=function(plugin_name){var detected=false;try{var axo=new ActiveXObject(plugin_name);if(axo){detected=true}}catch(e){}return detected};plugins={fla:detectPlugin("ShockwaveFlash.ShockwaveFlash"),qt:detectPlugin("QuickTime.QuickTime"),wmp:detectPlugin("wmplayer.ocx"),f4m:false}}var apply=function(o,e){for(var p in e){o[p]=e[p]}return o};var isLink=function(el){return el&&typeof el.tagName=="string"&&(el.tagName.toUpperCase()=="A"||el.tagName.toUpperCase()=="AREA")};SL.getViewportHeight=function(){var h=window.innerHeight;var mode=document.compatMode;if((mode||client.isIE)&&!client.isOpera){h=client.isStrict?document.documentElement.clientHeight:document.body.clientHeight}return h};SL.getViewportWidth=function(){var w=window.innerWidth;var mode=document.compatMode;if(mode||client.isIE){w=client.isStrict?document.documentElement.clientWidth:document.body.clientWidth}return w};SL.createHTML=function(obj){var html="<"+obj.tag;for(var attr in obj){if(attr=="tag"||attr=="html"||attr=="children"){continue}if(attr=="cls"){html+=' class="'+obj.cls+'"'}else{html+=" "+attr+'="'+obj[attr]+'"'}}if(RE.empty.test(obj.tag)){html+="/>"}else{html+=">";var cn=obj.children;if(cn){for(var i=0,len=cn.length;i<len;++i){html+=this.createHTML(cn[i])}}if(obj.html){html+=obj.html}html+="</"+obj.tag+">"}return html};var ease=function(x){return 1+Math.pow(x-1,3)};var animate=function(el,p,to,d,cb){var from=parseFloat(SL.getStyle(el,p));if(isNaN(from)){from=0}if(from==to){if(typeof cb=="function"){cb()}return }var delta=to-from;var op=p=="opacity";var unit=op?"":"px";var fn=function(ease){SL.setStyle(el,p,from+ease*delta+unit)};if(!options.animate&&!op||op&&!options.animateFade){fn(1);if(typeof cb=="function"){cb()}return }d*=1000;var begin=new Date().getTime();var end=begin+d;var timer=setInterval(function(){var time=new Date().getTime();if(time>=end){clearInterval(timer);fn(1);if(typeof cb=="function"){cb()}}else{fn(ease((time-begin)/d))}},10)};var clearOpacity=function(el){var s=el.style;if(client.isIE){if(typeof s.filter=="string"&&(/alpha/i).test(s.filter)){s.filter=s.filter.replace(/[\w\.]*alpha\(.*?\);?/i,"")}}else{s.opacity="";s["-moz-opacity"]="";s["-khtml-opacity"]=""}};var getComputedHeight=function(el){var h=Math.max(el.offsetHeight,el.clientHeight);if(!h){h=parseInt(SL.getStyle(el,"height"),10)||0;if(!client.isBorderBox){h+=parseInt(SL.getStyle(el,"padding-top"),10)+parseInt(SL.getStyle(el,"padding-bottom"),10)+parseInt(SL.getStyle(el,"border-top-width"),10)+parseInt(SL.getStyle(el,"border-bottom-width"),10)}}return h};var getPlayer=function(url){var m=url.match(RE.domain);var d=m&&document.domain==m[1];if(url.indexOf("#")>-1&&d){return"inline"}var q=url.indexOf("?");if(q>-1){url=url.substring(0,q)}if(RE.img.test(url)){return"img"}if(RE.swf.test(url)){return plugins.fla?"swf":"unsupported-swf"}if(RE.flv.test(url)){return plugins.fla?"flv":"unsupported-flv"}if(RE.qt.test(url)){return plugins.qt?"qt":"unsupported-qt"}if(RE.wmp.test(url)){if(plugins.wmp){return"wmp"}if(plugins.f4m){return"qt"}if(client.isMac){return plugins.qt?"unsupported-f4m":"unsupported-qtf4m"}return"unsupported-wmp"}else{if(RE.qtwmp.test(url)){if(plugins.qt){return"qt"}if(plugins.wmp){return"wmp"}return client.isMac?"unsupported-qt":"unsupported-qtwmp"}else{if(!d||RE.iframe.test(url)){return"iframe"}}}return"unsupported"};var handleClick=function(ev){var link;if(isLink(this)){link=this}else{link=SL.getTarget(ev);while(!isLink(link)&&link.parentNode){link=link.parentNode}}if(link){SB.open(link);if(gallery.length){SL.preventDefault(ev)}}};var toggleNav=function(id,on){var el=SL.get("shadowbox_nav_"+id);if(el){el.style.display=on?"":"none"}};var buildBars=function(cb){var obj=gallery[current];var title_i=SL.get("shadowbox_title_inner");title_i.innerHTML=obj.title||"";var nav=SL.get("shadowbox_nav");if(nav){var c,n,pl,pa,p;if(options.displayNav){c=true;var len=gallery.length;if(len>1){if(options.continuous){n=p=true}else{n=(len-1)>current;p=current>0}}if(options.slideshowDelay>0&&hasNext()){pa=slide_timer!="paused";pl=!pa}}else{c=n=pl=pa=p=false}toggleNav("close",c);toggleNav("next",n);toggleNav("play",pl);toggleNav("pause",pa);toggleNav("previous",p)}var counter=SL.get("shadowbox_counter");if(counter){var co="";if(options.displayCounter&&gallery.length>1){if(options.counterType=="skip"){var i=0,len=gallery.length,end=len;var limit=parseInt(options.counterLimit);if(limit<len){var h=Math.round(limit/2);i=current-h;if(i<0){i+=len}end=current+(limit-h);if(end>len){end-=len}}while(i!=end){if(i==len){i=0}co+='<a onclick="Shadowbox.change('+i+');"';if(i==current){co+=' class="shadowbox_counter_current"'}co+=">"+(++i)+"</a>"}}else{co=(current+1)+" "+SB.LANG.of+" "+len}}counter.innerHTML=co}cb()};var hideBars=function(anim,cb){var obj=gallery[current];var title=SL.get("shadowbox_title");var info=SL.get("shadowbox_info");var title_i=SL.get("shadowbox_title_inner");var info_i=SL.get("shadowbox_info_inner");var fn=function(){buildBars(cb)};var title_h=getComputedHeight(title);var info_h=getComputedHeight(info)*-1;if(anim){animate(title_i,"margin-top",title_h,0.35);animate(info_i,"margin-top",info_h,0.35,fn)}else{SL.setStyle(title_i,"margin-top",title_h+"px");SL.setStyle(info_i,"margin-top",info_h+"px");fn()}};var showBars=function(cb){var title_i=SL.get("shadowbox_title_inner");var info_i=SL.get("shadowbox_info_inner");var t=title_i.innerHTML!="";if(t){animate(title_i,"margin-top",0,0.35)}animate(info_i,"margin-top",0,0.35,cb)};var loadContent=function(){var obj=gallery[current];if(!obj){return }var changing=false;if(content){content.remove();changing=true}var p=obj.player=="inline"?"html":obj.player;if(typeof SB[p]!="function"){SB.raise("Unknown player "+obj.player)}content=new SB[p](content_id,obj);listenKeys(false);toggleLoading(true);hideBars(changing,function(){if(!content){return }if(!changing){SL.get("shadowbox").style.display=""}var fn=function(){resizeContent(function(){if(!content){return }showBars(function(){if(!content){return }SL.get("shadowbox_body_inner").innerHTML=SL.createHTML(content.markup(dims));toggleLoading(false,function(){if(!content){return }if(typeof content.onLoad=="function"){content.onLoad()}if(options.onFinish&&typeof options.onFinish=="function"){options.onFinish(gallery[current])}if(slide_timer!="paused"){SB.play()}listenKeys(true)})})})};if(typeof content.ready!="undefined"){var id=setInterval(function(){if(content){if(content.ready){clearInterval(id);id=null;fn()}}else{clearInterval(id);id=null}},100)}else{fn()}});if(gallery.length>1){var next=gallery[current+1]||gallery[0];if(next.player=="img"){var a=new Image();a.src=next.content}var prev=gallery[current-1]||gallery[gallery.length-1];if(prev.player=="img"){var b=new Image();b.src=prev.content}}};var setDimensions=function(height,width,resizable){resizable=resizable||false;var sb=SL.get("shadowbox_body");var h=height=parseInt(height);var w=width=parseInt(width);var view_h=SL.getViewportHeight();var view_w=SL.getViewportWidth();var border_w=parseInt(SL.getStyle(sb,"border-left-width"),10)+parseInt(SL.getStyle(sb,"border-right-width"),10);var extra_w=border_w+2*options.viewportPadding;if(w+extra_w>=view_w){w=view_w-extra_w}var border_h=parseInt(SL.getStyle(sb,"border-top-width"),10)+parseInt(SL.getStyle(sb,"border-bottom-width"),10);var bar_h=getComputedHeight(SL.get("shadowbox_title"))+getComputedHeight(SL.get("shadowbox_info"));var extra_h=border_h+2*options.viewportPadding+bar_h;if(h+extra_h>=view_h){h=view_h-extra_h}var drag=false;var resize_h=height;var resize_w=width;var handle=options.handleOversize;if(resizable&&(handle=="resize"||handle=="drag")){var change_h=(height-h)/height;var change_w=(width-w)/width;if(handle=="resize"){if(change_h>change_w){w=Math.round((width/height)*h)}else{if(change_w>change_h){h=Math.round((height/width)*w)}}resize_w=w;resize_h=h}else{var link=gallery[current];if(link){drag=link.player=="img"&&(change_h>0||change_w>0)}}}dims={height:h+border_h+bar_h,width:w+border_w,inner_h:h,inner_w:w,top:(view_h-(h+extra_h))/2+options.viewportPadding,resize_h:resize_h,resize_w:resize_w,drag:drag}};var resizeContent=function(cb){if(!content){return }setDimensions(content.height,content.width,content.resizable);if(cb){switch(options.animSequence){case"hw":adjustHeight(dims.inner_h,dims.top,true,function(){adjustWidth(dims.width,true,cb)});break;case"wh":adjustWidth(dims.width,true,function(){adjustHeight(dims.inner_h,dims.top,true,cb)});break;case"sync":default:adjustWidth(dims.width,true);adjustHeight(dims.inner_h,dims.top,true,cb)}}else{adjustWidth(dims.width,false);adjustHeight(dims.inner_h,dims.top,false);var c=SL.get(content_id);if(c){if(content.resizable&&options.handleOversize=="resize"){c.height=dims.resize_h;c.width=dims.resize_w}if(gallery[current].player=="img"&&options.handleOversize=="drag"){var top=parseInt(SL.getStyle(c,"top"));if(top+content.height<dims.inner_h){SL.setStyle(c,"top",dims.inner_h-content.height+"px")}var left=parseInt(SL.getStyle(c,"left"));if(left+content.width<dims.inner_w){SL.setStyle(c,"left",dims.inner_w-content.width+"px")}}}}};var adjustHeight=function(height,top,anim,cb){height=parseInt(height);var sb=SL.get("shadowbox_body");if(anim){animate(sb,"height",height,options.resizeDuration)}else{SL.setStyle(sb,"height",height+"px")}var s=SL.get("shadowbox");if(anim){animate(s,"top",top,options.resizeDuration,cb)}else{SL.setStyle(s,"top",top+"px");if(typeof cb=="function"){cb()}}};var adjustWidth=function(width,anim,cb){width=parseInt(width);var s=SL.get("shadowbox");if(anim){animate(s,"width",width,options.resizeDuration,cb)}else{SL.setStyle(s,"width",width+"px");if(typeof cb=="function"){cb()}}};var listenKeys=function(on){if(!options.enableKeys){return }SL[(on?"add":"remove")+"Event"](document,"keydown",handleKey)};var handleKey=function(e){var code=SL.keyCode(e);SL.preventDefault(e);if(code==81||code==88||code==27){SB.close()}else{if(code==37){SB.previous()}else{if(code==39){SB.next()}else{if(code==32){SB[(typeof slide_timer=="number"?"pause":"play")]()}}}}};var toggleLoading=function(on,cb){var loading=SL.get("shadowbox_loading");if(on){loading.style.display="";if(typeof cb=="function"){cb()}}else{var p=gallery[current].player;var anim=(p=="img"||p=="html");var fn=function(){loading.style.display="none";clearOpacity(loading);if(typeof cb=="function"){cb()}};if(anim){animate(loading,"opacity",0,options.fadeDuration,fn)}else{fn()}}};var fixTop=function(){SL.get("shadowbox_container").style.top=document.documentElement.scrollTop+"px"};var fixHeight=function(){SL.get("shadowbox_overlay").style.height=SL.getViewportHeight()+"px"};var hasNext=function(){return gallery.length>1&&(current!=gallery.length-1||options.continuous)};var toggleVisible=function(cb){var els,v=(cb)?"hidden":"visible";var hide=["select","object","embed"];for(var i=0;i<hide.length;++i){els=document.getElementsByTagName(hide[i]);for(var j=0,len=els.length;j<len;++j){els[j].style.visibility=v}}var so=SL.get("shadowbox_overlay");var sc=SL.get("shadowbox_container");var sb=SL.get("shadowbox");if(cb){SL.setStyle(so,{backgroundColor:options.overlayColor,opacity:0});if(!options.modal){SL.addEvent(so,"click",SB.close)}if(ltIE7){fixTop();fixHeight();SL.addEvent(window,"scroll",fixTop)}sb.style.display="none";sc.style.visibility="visible";animate(so,"opacity",parseFloat(options.overlayOpacity),options.fadeDuration,cb)}else{SL.removeEvent(so,"click",SB.close);if(ltIE7){SL.removeEvent(window,"scroll",fixTop)}sb.style.display="none";animate(so,"opacity",0,options.fadeDuration,function(){sc.style.visibility="hidden";sb.style.display="";clearOpacity(so)})}};Shadowbox.init=function(opts){if(initialized){return }if(typeof SB.LANG=="undefined"){SB.raise("No Shadowbox language loaded");return }if(typeof SB.SKIN=="undefined"){SB.raise("No Shadowbox skin loaded");return }apply(options,opts||{});var markup=SB.SKIN.markup.replace(/\{(\w+)\}/g,function(m,p){return SB.LANG[p]});var bd=document.body||document.documentElement;SL.append(bd,markup);if(ltIE7){SL.setStyle(SL.get("shadowbox_container"),"position","absolute");SL.get("shadowbox_body").style.zoom=1;var png=SB.SKIN.png_fix;if(png&&png.constructor==Array){for(var i=0;i<png.length;++i){var el=SL.get(png[i]);if(el){var match=SL.getStyle(el,"background-image").match(/url\("(.*\.png)"\)/);if(match){SL.setStyle(el,{backgroundImage:"none",filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true,src="+match[1]+",sizingMethod=scale);"})}}}}}for(var e in options.ext){RE[e]=new RegExp(".("+options.ext[e].join("|")+")s*$","i")}var id;SL.addEvent(window,"resize",function(){if(id){clearTimeout(id);id=null}id=setTimeout(function(){if(ltIE7){fixHeight()}resizeContent()},50)});if(!options.skipSetup){SB.setup()}initialized=true};Shadowbox.loadSkin=function(skin,dir){if(!(/\/$/.test(dir))){dir+="/"}skin=dir+skin+"/";document.write('<link rel="stylesheet" type="text/css" href="'+skin+'skin.css">');document.write('<script type="text/javascript" src="'+skin+'skin.js"><\/script>')};Shadowbox.loadLanguage=function(lang,dir){if(!(/\/$/.test(dir))){dir+="/"}document.write('<script type="text/javascript" src="'+dir+"shadowbox-"+lang+'.js"><\/script>')};Shadowbox.loadPlayer=function(players,dir){if(typeof players=="string"){players=[players]}if(!(/\/$/.test(dir))){dir+="/"}for(var i=0,len=players.length;i<len;++i){document.write('<script type="text/javascript" src="'+dir+"shadowbox-"+players[i]+'.js"><\/script>')}};Shadowbox.setup=function(links,opts){if(!links){var links=[];var a=document.getElementsByTagName("a"),rel;for(var i=0,len=a.length;i<len;++i){rel=a[i].getAttribute("rel");if(rel&&RE.rel.test(rel)){links[links.length]=a[i]}}}else{if(!links.length){links=[links]}}var link;for(var i=0,len=links.length;i<len;++i){link=links[i];if(typeof link.shadowboxCacheKey=="undefined"){link.shadowboxCacheKey=cache.length;SL.addEvent(link,"click",handleClick)}cache[link.shadowboxCacheKey]=this.buildCacheObj(link,opts)}};Shadowbox.buildCacheObj=function(link,opts){var href=link.href;var o={el:link,title:link.getAttribute("title"),player:getPlayer(href),options:apply({},opts||{}),content:href};var opt,l_opts=["player","title","height","width","gallery"];for(var i=0,len=l_opts.length;i<len;++i){opt=l_opts[i];if(typeof o.options[opt]!="undefined"){o[opt]=o.options[opt];delete o.options[opt]}}var rel=link.getAttribute("rel");if(rel){var match=rel.match(RE.gallery);if(match){o.gallery=escape(match[2])}var params=rel.split(";");for(var i=0,len=params.length;i<len;++i){match=params[i].match(RE.param);if(match){if(match[1]=="options"){eval("apply(o.options, "+match[2]+")")}else{o[match[1]]=match[2]}}}}return o};Shadowbox.applyOptions=function(opts){if(opts){default_options=apply({},options);options=apply(options,opts)}};Shadowbox.revertOptions=function(){if(default_options){options=default_options;default_options=null}};Shadowbox.open=function(obj,opts){this.revertOptions();if(isLink(obj)){if(typeof obj.shadowboxCacheKey=="undefined"||typeof cache[obj.shadowboxCacheKey]=="undefined"){obj=this.buildCacheObj(obj,opts)}else{obj=cache[obj.shadowboxCacheKey]}}if(obj.constructor==Array){gallery=obj;current=0}else{var copy=apply({},obj);if(!obj.gallery){gallery=[copy];current=0}else{current=null;gallery=[];var ci;for(var i=0,len=cache.length;i<len;++i){ci=cache[i];if(ci.gallery){if(ci.content==obj.content&&ci.gallery==obj.gallery&&ci.title==obj.title){current=gallery.length}if(ci.gallery==obj.gallery){gallery.push(apply({},ci))}}}if(current==null){gallery.unshift(copy);current=0}}}obj=gallery[current];if(obj.options||opts){this.applyOptions(apply(apply({},obj.options||{}),opts||{}))}var match,r;for(var i=0,len=gallery.length;i<len;++i){r=false;if(gallery[i].player=="unsupported"){r=true}else{if(match=RE.unsupported.exec(gallery[i].player)){if(options.handleUnsupported=="link"){gallery[i].player="html";var s,a,oe=options.errors;switch(match[1]){case"qtwmp":s="either";a=[oe.qt.url,oe.qt.name,oe.wmp.url,oe.wmp.name];break;case"qtf4m":s="shared";a=[oe.qt.url,oe.qt.name,oe.f4m.url,oe.f4m.name];break;default:s="single";if(match[1]=="swf"||match[1]=="flv"){match[1]="fla"}a=[oe[match[1]].url,oe[match[1]].name]}var msg=SB.LANG.errors[s].replace(/\{(\d+)\}/g,function(m,i){return a[i]});gallery[i].content='<div class="shadowbox_message">'+msg+"</div>"}else{r=true}}else{if(gallery[i].player=="inline"){var match=RE.inline.exec(gallery[i].content);if(match){var el;if(el=SL.get(match[1])){gallery[i].content=el.innerHTML}else{SB.raise("Cannot find element with id "+match[1])}}else{SB.raise("Cannot find element id for inline content")}}}}if(r){gallery.splice(i,1);if(i<current){--current}else{if(i==current){current=i>0?current-1:i}}--i;len=gallery.length}}if(gallery.length){if(options.onOpen&&typeof options.onOpen=="function"){options.onOpen(obj)}if(!activated){setDimensions(options.initialHeight,options.initialWidth);adjustHeight(dims.inner_h,dims.top,false);adjustWidth(dims.width,false);toggleVisible(loadContent)}else{loadContent()}activated=true}};Shadowbox.change=function(num){if(!gallery){return }if(!gallery[num]){if(!options.continuous){return }else{num=num<0?(gallery.length-1):0}}if(typeof slide_timer=="number"){clearTimeout(slide_timer);slide_timer=null;slide_delay=slide_start=0}current=num;if(options.onChange&&typeof options.onChange=="function"){options.onChange(gallery[current])}loadContent()};Shadowbox.next=function(){this.change(current+1)};Shadowbox.previous=function(){this.change(current-1)};Shadowbox.play=function(){if(!hasNext()){return }if(!slide_delay){slide_delay=options.slideshowDelay*1000}if(slide_delay){slide_start=new Date().getTime();slide_timer=setTimeout(function(){slide_delay=slide_start=0;SB.next()},slide_delay);toggleNav("play",false);toggleNav("pause",true)}};Shadowbox.pause=function(){if(typeof slide_timer=="number"){var time=new Date().getTime();slide_delay=Math.max(0,slide_delay-(time-slide_start));if(slide_delay){clearTimeout(slide_timer);slide_timer="paused"}toggleNav("pause",false);toggleNav("play",true)}};Shadowbox.close=function(){if(!activated){return }listenKeys(false);toggleVisible(false);if(content){content.remove();content=null}if(typeof slide_timer=="number"){clearTimeout(slide_timer)}slide_timer=null;slide_delay=0;if(options.onClose&&typeof options.onClose=="function"){options.onClose(gallery[current])}activated=false};Shadowbox.clearCache=function(){for(var i=0,len=cache.length;i<len;++i){if(cache[i].el){SL.removeEvent(cache[i].el,"click",handleClick);delete cache[i].el.shadowboxCacheKey}}cache=[]};Shadowbox.getPlugins=function(){return plugins};Shadowbox.getOptions=function(){return options};Shadowbox.getCurrent=function(){return gallery[current]};Shadowbox.getVersion=function(){return version};Shadowbox.getClient=function(){return client};Shadowbox.getContent=function(){return content};Shadowbox.getDimensions=function(){return dims};Shadowbox.raise=function(e){if(typeof options.handleException=="function"){options.handleException(e)}else{throw e}}})(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-base.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-base.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-base.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +var Shadowbox={};Shadowbox.lib=function(){var F={};var C=/(-[a-z])/gi;var B=function(H,I){return I.charAt(1).toUpperCase()};var G=function(I){var H;if(!(H=F[I])){H=F[I]=I.replace(C,B)}return H};var A=document.defaultView;var E=/alpha\([^\)]*\)/gi;var D=function(J,H){var I=J.style;if(window.ActiveXObject){I.zoom=1;I.filter=(I.filter||"").replace(E,"")+(H==1?"":" alpha(opacity="+(H*100)+")")}else{I.opacity=H}};return{adapter:"standalone",getStyle:function(){return A&&A.getComputedStyle?function(L,K){var H,J,I;if(K=="float"){K="cssFloat"}if(H=L.style[K]){return H}if(J=A.getComputedStyle(L,"")){return J[G(K)]}return null}:function(M,L){var I,K,J;if(L=="opacity"){if(typeof M.style.filter=="string"){var H=M.style.filter.match(/alpha\(opacity=(.+)\)/i);if(H){var N=parseFloat(H[1]);if(!isNaN(N)){return(N?N/100:0)}}}return 1}else{if(L=="float"){L="styleFloat"}}var J=G(L);if(I=M.style[J]){return I}if(K=M.currentStyle){return K[J]}return null}}(),setStyle:function(K,J,L){if(typeof J=="string"){var H=G(J);if(H=="opacity"){D(K,L)}else{K.style[H]=L}}else{for(var I in J){this.setStyle(K,I,J[I])}}},get:function(H){return typeof H=="string"?document.getElementById(H):H},remove:function(H){H.parentNode.removeChild(H)},getTarget:function(I){var H=I.target?I.target:I.srcElement;return H.nodeType==3?H.parentNode:H},getPageXY:function(I){var H=I.pageX||(I.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft));var J=I.pageY||(I.clientY+(document.documentElement.scrollTop||document.body.scrollTop));return[H,J]},preventDefault:function(H){if(H.preventDefault){H.preventDefault()}else{H.returnValue=false}},keyCode:function(H){return H.which?H.which:H.keyCode},addEvent:function(J,H,I){if(J.addEventListener){J.addEventListener(H,I,false)}else{if(J.attachEvent){J.attachEvent("on"+H,I)}}},removeEvent:function(J,H,I){if(J.removeEventListener){J.removeEventListener(H,I,false)}else{if(J.detachEvent){J.detachEvent("on"+H,I)}}},append:function(J,I){if(J.insertAdjacentHTML){J.insertAdjacentHTML("BeforeEnd",I)}else{if(J.lastChild){var H=J.ownerDocument.createRange();H.setStartAfter(J.lastChild);var K=H.createContextualFragment(I);J.appendChild(K)}else{J.innerHTML=I}}}}}(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-dojo.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-dojo.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-dojo.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof dojo=="undefined"){throw"Unable to load Shadowbox, Dojo Toolkit not found"}var Shadowbox={};Shadowbox.lib=function(){var C=[];var D={};var B=/(-[a-z])/gi;var A=function(F,G){return G.charAt(1).toUpperCase()};var E=function(G){var F;if(!(F=D[G])){F=D[G]=G.replace(B,A)}return F};return{adapter:"dojo",getStyle:function(G,F){return dojo.style(G,E(F))},setStyle:function(H,G,I){if(typeof G=="string"){dojo.style(H,E(G),I)}else{for(var F in G){dojo.style(H,F,G[F])}}},get:function(F){return dojo.byId(F)},remove:function(F){dojo._destroyElement(F)},getTarget:function(F){return F.target},getPageXY:function(F){return[F.pageX,F.pageY]},preventDefault:function(F){F.preventDefault()},keyCode:function(F){return F.keyCode},addEvent:function(I,F,H){var G=dojo.connect(I,F,H);C.push({el:I,name:F,handle:G})},removeEvent:function(H,F,G){dojo.forEach(C,function(J,I){if(J&&J.el==H&&J.name==F){dojo.disconnect(J.handle);C[I]=null}})},append:function(H,G){if(H.insertAdjacentHTML){H.insertAdjacentHTML("BeforeEnd",G)}else{if(H.lastChild){var F=H.ownerDocument.createRange();F.setStartAfter(H.lastChild);var I=F.createContextualFragment(G);H.appendChild(I)}else{H.innerHTML=G}}}}}(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-ext.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-ext.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-ext.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Ext=="undefined"){throw"Unable to load Shadowbox, core Ext framework not found"}var Shadowbox={};Shadowbox.lib=function(){var A=Ext.lib.Event;return{adapter:"ext",getStyle:function(C,B){return Ext.get(C).getStyle(B)},setStyle:function(C,B,D){Ext.get(C).setStyle(B,D)},get:function(B){return Ext.getDom(B)},remove:function(B){Ext.get(B).remove()},getTarget:function(B){return A.getTarget(B)},getPageXY:function(B){return[A.getPageX(B),A.getPageY(B)]},preventDefault:function(B){A.preventDefault(B)},keyCode:function(B){return A.getCharCode(B)},addEvent:function(D,B,C){A.addListener(D,B,C)},removeEvent:function(D,B,C){A.removeListener(D,B,C)},append:function(C,B){Ext.DomHelper.append(C,B)}}}(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-jquery.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-jquery.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-jquery.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof jQuery=="undefined"){throw"Unable to load Shadowbox, jQuery library not found"}var Shadowbox={};Shadowbox.lib={adapter:"jquery",getStyle:function(B,A){return jQuery(B).css(A)},setStyle:function(C,B,D){if(typeof B!="object"){var A={};A[B]=D;B=A}jQuery(C).css(B)},get:function(A){return(typeof A=="string")?document.getElementById(A):A},remove:function(A){jQuery(A).remove()},getTarget:function(A){return A.target},getPageXY:function(A){return[A.pageX,A.pageY]},preventDefault:function(A){A.preventDefault()},keyCode:function(A){return A.keyCode},addEvent:function(C,A,B){jQuery(C).bind(A,B)},removeEvent:function(C,A,B){jQuery(C).unbind(A,B)},append:function(B,A){jQuery(B).append(A)}};(function(A){A.fn.shadowbox=function(B){return this.each(function(){var E=A(this);var D=A.extend({},B||{},A.metadata?E.metadata():A.meta?E.data():{});var C=this.className||"";D.width=parseInt((C.match(/w:(\d+)/)||[])[1])||D.width;D.height=parseInt((C.match(/h:(\d+)/)||[])[1])||D.height;Shadowbox.setup(E,D)})}})(jQuery); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-mootools.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-mootools.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-mootools.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof MooTools=="undefined"){throw"Unable to load Shadowbox, MooTools library not found"}var Shadowbox={};Shadowbox.lib=function(){var B=/alpha\([^\)]*\)/gi;var A=function(E,C){var D=E.style;if(window.ActiveXObject){D.zoom=1;D.filter=(D.filter||"").replace(B,"")+(C==1?"":" alpha(opacity="+C*100+")")}else{D.opacity=C}};return{adapter:"mootools",getStyle:function(D,C){return $(D).getStyle(C)},setStyle:function(E,D,F){E=$(E);if(typeof D!="object"){var G={};G[D]=F;D=G}for(var C in D){if(C=="opacity"){A(E,D[C])}else{E.setStyle(C,D[C])}}},get:function(C){return $(C)},remove:function(C){C.parentNode.removeChild(C)},getTarget:function(C){return C.target},getPageXY:function(C){return[C.page.x,C.page.y]},preventDefault:function(C){C.preventDefault()},keyCode:function(C){return C.code},addEvent:function(E,C,D){$(E).addEvent(C,D)},removeEvent:function(E,C,D){$(E).removeEvent(C,D)},append:function(E,D){if(E.insertAdjacentHTML){E.insertAdjacentHTML("BeforeEnd",D)}else{if(E.lastChild){var C=E.ownerDocument.createRange();C.setStartAfter(E.lastChild);var F=C.createContextualFragment(D);E.appendChild(F)}else{E.innerHTML=D}}}}}(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-prototype.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-prototype.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-prototype.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Prototype=="undefined"){throw"Unable to load Shadowbox, Prototype framework not found"}var Shadowbox={};Shadowbox.lib=function(){var C={};var B=/(-[a-z])/gi;var A=function(E,F){return F.charAt(1).toUpperCase()};var D=function(F){var E;if(!(E=C[F])){E=C[F]=F.replace(B,A)}return E};return{adapter:"prototype",getStyle:function(F,E){return Element.getStyle(F,E)},setStyle:function(G,F,H){if(typeof F=="string"){var E={};E[D(F)]=H;F=E}Element.setStyle(G,F)},get:function(E){return $(E)},remove:function(E){Element.remove(E)},getTarget:function(E){return Event.element(E)},preventDefault:function(E){Event.stop(E)},getPageXY:function(F){var E=Event.pointer(F);return[E.x,E.y]},keyCode:function(E){return E.keyCode},addEvent:function(G,E,F){Event.observe(G,E,F)},removeEvent:function(G,E,F){Event.stopObserving(G,E,F)},append:function(F,E){Element.insert(F,E)}}}(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-yui.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-yui.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/adapter/shadowbox-yui.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof YAHOO=="undefined"){throw"Unable to load Shadowbox, core YUI utilities (yahoo, dom, event) not found"}var Shadowbox={};Shadowbox.lib=function(){var A=YAHOO.util.Event;var B=YAHOO.util.Dom;return{adapter:"yui",getStyle:function(D,C){return B.getStyle(D,C)},setStyle:function(F,E,G){if(typeof E!="object"){var C={};C[E]=G;E=C}for(var D in E){B.setStyle(F,D,E[D])}},get:function(C){return B.get(C)},remove:function(C){C.parentNode.removeChild(C)},getTarget:function(C){return A.getTarget(C)},getPageXY:function(C){return[A.getPageX(C),A.getPageY(C)]},preventDefault:function(C){A.preventDefault(C)},keyCode:function(C){return C.keyCode},addEvent:function(E,C,D){A.addListener(E,C,D)},removeEvent:function(E,C,D){A.removeListener(E,C,D)},append:function(E,D){if(E.insertAdjacentHTML){E.insertAdjacentHTML("BeforeEnd",D)}else{if(E.lastChild){var C=E.ownerDocument.createRange();C.setStartAfter(E.lastChild);var F=C.createContextualFragment(D);E.appendChild(F)}else{E.innerHTML=D}}}}}(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ar.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ar.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ar.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"ar",of:"من",loading:"جار التحميل",cancel:"خروج",next:"التالى",previous:"السابق",play:"بدء",pause:"ايقاف",close:"اغلاق",errors:{single:'يجب ان تقوم بتنصيب اضافة المتصفح <a href="{0}">{1}</a> لعرض هذا المحتوى.',shared:'يجب ان تقوم بتنصيب الاضافتين <a href="{0}">{1}</a> و <a href="{2}">{3}</a>للمتصفح لعرض هذا المحتوى.',either:'يجب ان قوم بتنصيب اما الاضافة التاليى <a href="{0}">{1}</a> او <a href="{2}">{3}</a> للمتصفح لعرض هذا المحتوى.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ca.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ca.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ca.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"ca",of:"de",loading:"carregant",cancel:"Cancel·la",next:"Següent",previous:"Anterior",play:"Reprodueix",pause:"Pausa",close:"Tanca",errors:{single:'Heu d\'instal·lar el complement <a href="{0}">{1}</a> al vostre navegador per veure el contingut.',shared:'Heu d\'instal·lar els complements <a href="{0}">{1}</a> i <a href="{2}">{3}</a> al vostre navegador per veure el contingut.',either:'Heu d\'instal·lar el complement <a href="{0}">{1}</a> o el complement <a href="{2}">{3}</a> al vostre navegador per veure el contingut.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-cs.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-cs.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-cs.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"cs",of:"z(e)",loading:"nahrávám",cancel:"Zrušit",next:"Další",previous:"Předchozí",play:"Přehrát",pause:"Pauza",close:"Zavřít",errors:{single:'Pro správné zobrazení je potřeba nainstalovat tento zásuvný modul do Vašeho prohlížeče: <a href="{0}">{1}</a>.',shared:'Pro správné zobrazení je potřeba nainstalovat oba tyto zásuvné moduly do Vašeho prohlížeče: <a href="{0}">{1}</a> a <a href="{2}">{3}</a>.',either:'Pro správné zobrazení je potřeba do Vašeho prohlížeče nainstalovat jeden z následujících zásuvných modulů: <a href="{0}">{1}</a> nebo <a href="{2}">{3}</a>.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-de-CH.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-de-CH.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-de-CH.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"de-CH",of:"von",loading:"lade",cancel:"Abbrechen",next:"weiter",previous:"zurück",play:"Abspielen",pause:"Pause",close:"Schliessen",errors:{single:'Um den Inhalt anzeigen zu können muss die Browser-Erweiterung <a href="{0}">{1}</a> installiert werden.',shared:'Um den Inhalt anzeigen zu können müssen die beiden Browser-Erweiterungen <a href="{0}">{1}</a> und <a href="{2}">{3}</a> installiert werden.',either:'Um den Inhalt anzeigen zu können muss eine der beiden Browser-Erweiterungen <a href="{0}">{1}</a> oder <a href="{2}">{3}</a> installiert werden.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-de-DE.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-de-DE.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-de-DE.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"de",of:"von",loading:"ladend",cancel:"Abbrechen",next:"Nächste",previous:"Vorige",play:"Abspielen",pause:"Pause",close:"Schließen",errors:{single:'Um den Inhalt anzeigen zu können muss die Browser-Erweiterung <a href="{0}">{1}</a> installiert werden.',shared:'Um den Inhalt anzeigen zu können müssen die beiden Browser-Erweiterungen <a href="{0}">{1}</a> und <a href="{2}">{3}</a> installiert werden.',either:'Um den Inhalt anzeigen zu können muss eine der beiden Browser-Erweiterungen <a href="{0}">{1}</a> oder <a href="{2}">{3}</a> installiert werden.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-en.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-en.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-en.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"en",of:"of",loading:"loading",cancel:"Cancel",next:"Next",previous:"Previous",play:"Play",pause:"Pause",close:"Close",errors:{single:'You must install the <a href="{0}">{1}</a> browser plugin to view this content.',shared:'You must install both the <a href="{0}">{1}</a> and <a href="{2}">{3}</a> browser plugins to view this content.',either:'You must install either the <a href="{0}">{1}</a> or the <a href="{2}">{3}</a> browser plugin to view this content.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-es.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-es.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-es.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"es",of:"de",loading:"cargando",cancel:"Cancelar",next:"Siguiente",previous:"Anterior",play:"Reproducir",pause:"Pausa",close:"Cerrar",errors:{single:'Debes instalar el plugin <a href="{0}">{1}</a> en el navegador para ver este contenido.',shared:'Debes instalar el <a href="{0}">{1}</a> y el <a href="{2}">{3}</a> en el navegador para ver este contenido.',either:'Debes instalar o bien el <a href="{0}">{1}</a> o el <a href="{2}">{3}</a> en el navegador para ver este contenido.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-et.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-et.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-et.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"et",of:"/",loading:"laen",cancel:"Katkesta",next:"Järgmine",previous:"Eelmine",play:"Start",pause:"Paus",close:"Sulge",errors:{single:'Lehekülje vaatamiseks installeerige browser\'i plugin <a href="{0}">{1}</a>.',shared:'Lehekülje vaatamiseks installeerige plugin\'id <a href="{0}">{1}</a> ja <a href="{2}">{3}</a>.',either:'Lehekülje vaatamiseks installeerige kas <a href="{0}">{1}</a> või <a href="{2}">{3}</a> plugin.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-fi.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-fi.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-fi.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"fi",of:"/",loading:"ladataan",cancel:"Peruuta",next:"Seuraava",previous:"Edellinen",play:"Toista",pause:"Pysäytä",close:"Sulje",errors:{single:'Sinun on asennettava <a href="{0}">{1}</a> nähdäksesi sisällön.',shared:'Sinun on asennettava <a href="{0}">{1}</a> - ja <a href="{2}">{3}</a> selainlaajennukset nähdäksesi sisällön.',either:'Sinun on asennetteva joko <a href="{0}">{1}</a> tai <a href="{2}">{3}</a> selainlaajennus nähdäksesi sisällön.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-fr.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-fr.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-fr.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"fr",of:"de",loading:"chargement",cancel:"Annuler",next:"Suivant",previous:"Précédent",play:"Lire",pause:"Pause",close:"Fermer",errors:{single:'Vous devez installer le plugin <a href="{0}">{1}</a> pour afficher ce contenu.',shared:'Vous devez installer les plugins <a href="{0}">{1}</a> et <a href="{2}">{3}</a> pour afficher ce contenu.',either:'Vous devez installer le plugin <a href="{0}">{1}</a> ou <a href="{2}">{3}</a> pour afficher ce contenu.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-gl.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-gl.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-gl.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"gl",of:"de",loading:"cargando",cancel:"Cancelar",next:"Seguinte",previous:"Anterior",play:"Reproducir",pause:"Pausa",close:"Pechar",errors:{single:'É necesario instalar o plugin <a href="{0}">{1}</a> para visualizar este contido.',shared:'É necesario instalar os plugins <a href="{0}">{1}</a> e <a href="{2}">{3}</a> para visualizar este contido.',either:'É necesario instalar o plugin <a href="{0}">{1}</a> ou o plugin <a href="{2}">{3}</a> para visualizar este contido.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-he.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-he.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-he.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"he",of:"מתוך",loading:"טוען",cancel:"ביטול",next:"הבא",previous:"הקודם",play:"נגן",pause:"השהה",close:"סגור",errors:{single:'על גבי הדפדפן על מנת לצפות בתוכן<a href="{0}">{1}</a> עליך להתקין את התקן ה.',shared:'על גבי הדפדפן על מנת לצפות בתוכן <a href="{0}">{1}</a> and <a href="{2}">{3}</a> עליך להתקין את שני ההתקנים.',either:'על מנת לצפות בתוכן <a href="{0}">{1}</a> או <a href="{2}">{3}</a> עליך להתקין התקן.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-id.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-id.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-id.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"id",of:"dari",loading:"pengisian",cancel:"Batal",next:"Berikut",previous:"Sebelum",play:"Mainkan",pause:"Hentikan",close:"Tutup",errors:{single:'Anda harus memasang plugin browser <a href="{0}">{1}</a> untuk melihat isi ini.',shared:'Anda harus memasang kedua plugin browser <a href="{0}">{1}</a> dan <a href="{2}">{3}</a> untuk melihat isi ini.',either:'Anda harus memasang plugin browser <a href="{0}">{1}</a> atau <a href="{2}">{3}</a> untuk melihat isi ini.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-is.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-is.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-is.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"is",of:"af",loading:"hleð",cancel:"Hætta",next:"Næsta",previous:"Fyrri",play:"Spila",pause:"Pása",close:"Loka",errors:{single:'Þú verður að setja inn ... <a href="{0}">{1}</a> vafra íforritið til að skoða þetta efni.',shared:'Þú verður að setja inn bæði <a href="{0}">{1}</a> og <a href="{2}">{3}</a> vafra íforritin til að skoða þetta efni.',either:'Þú verður að setja inn annað hvort <a href="{0}">{1}</a> eða <a href="{2}">{3}</a> vafra íforritin til að skoða þetta efni.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-it.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-it.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-it.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"it",of:"di",loading:"caricando",cancel:"Cancellare",next:"Prossimo",previous:"Antecedente",play:"Play",pause:"Pausa",close:"Chiudere",errors:{single:'È necessario installare il plugin <a href="{0}">{1}</a> per poter vedere questo contenuto.',shared:'È necessario installare i plugin <a href="{0}">{1}</a> e <a href="{2}">{3}</a> per poter vedere questo contenuto.',either:'È necessario installare o il plugin <a href="{0}">{1}</a> o <a href="{2}">{3}</a> per poter vedere questo contenuto.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ko.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ko.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ko.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"ko",of:"중",loading:"로딩 중",cancel:"취소",next:"다음",previous:"이전",play:"재생",pause:"잠시 멈춤",close:"닫기",errors:{single:'이 내용을 보려면 <a href="{0}">{1}</a> 브라우저 플러그인을 설치하십시오.',shared:'이 내용을 보려면 <a href="{0}">{1}</a> 와/과 <a href="{2}">{3}</a> 브라우저 플러그인을 설치하십시오.',either:'이 내용을 보려면 <a href="{0}">{1}</a> 또는 <a href="{2}">{3}</a> 브라우저 플러그인을 설치하십시오.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-my.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-my.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-my.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"my",of:"",loading:"memuat turun",cancel:"Batal",next:"Seterusnya",previous:"Sebelum",play:"Mainkan",pause:"Hentikan",close:"Tutup",errors:{single:'Anda perlu memasang <a href="{0}">{1}</a> plugin pelayar bagi melihat kandungan ini.',shared:'Anda perlu memasang kedua-dua <a href="{0}">{1}</a> dan <a href="{2}">{3}</a> plugin pelayar bagi melihat kandungan ini.',either:'Anda perlu memasang samada <a href="{0}">{1}</a> atau <a href="{2}">{3}</a> plugin pelayar bagi melihat kandungan ini.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-nl.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-nl.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-nl.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"nl",of:"van",loading:"laden",cancel:"Annuleren",next:"Volgende",previous:"Vorige",play:"Play",pause:"Pause",close:"Sluiten",errors:{single:'U moet de <a href="{0}">{1}</a> browser plugin installeren om dit media type te kunnen bekijken.',shared:'U moet de <a href="{0}">{1}</a> en de <a href="{2}">{3}</a> browser plugins installeren om dit media type te kunnen bekijken.',either:'U moet de <a href="{0}">{1}</a> of de <a href="{2}">{3}</a> browser plugin installeren om dit media type te kunnen bekijken.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-no.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-no.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-no.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"no",of:"av",loading:"laster",cancel:"Avbryt",next:"Neste",previous:"Forrige",play:"Spill",pause:"Pause",close:"Lukk",errors:{single:'Du må installere <a href="{0}">{1}</a> for å kunne se dette innholdet.',shared:'Du må installere båre <a href="{0}">{1}</a> og <a href="{2}">{3}</a> for å kunne se dette innholdet.',either:'Du må enten installere <a href="{0}">{1}</a> eller the <a href="{2}">{3}</a> for å kunne se dette innholdet.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pl.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pl.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pl.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"pl",of:"z",loading:"wczytywanie",cancel:"Anuluj",next:"Dalej",previous:"Wróć",play:"Odtwarzaj",pause:"Pauza",close:"Zamknij",errors:{single:'Musisz zainstalować plugin <a href="{0}">{1}</a> aby zobaczyć zawartość',shared:'Musisz zainstalować pluginy <a href="{0}">{1}</a> i <a href="{2}">{3}</a> aby zobaczyć zawartość ',either:'Musisz zainstalować plugin <a href="{0}">{1}</a> lub <a href="{2}">{3}</a> aby zobaczyć zawartość'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pt-BR.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pt-BR.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pt-BR.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"pt-BR",of:"de",loading:"carregando",cancel:"Cancelar",next:"Próximo",previous:"Anterior",play:"Play",pause:"Pause",close:"Fechar",errors:{single:'Você precisa instalar o plugin <a href="{0}">{1}</a> para visualizar o conteúdo.',shared:'Você precisa instalar os plugins <a href="{0}">{1}</a> e <a href="{2}">{3}</a>, para visualizar o conteúdo.',either:'Você precisa instalar o plugin <a href="{0}">{1}</a> ou o plugin <a href="{2}">{3}</a>, para visualizar o conteúdo.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pt-PT.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pt-PT.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-pt-PT.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"pt-PT",of:"de",loading:"A Carregar...",cancel:"Cancelar",next:"Seguinte",previous:"Anterior",play:"Reproduzir",pause:"Pausa",close:"Fechar",errors:{single:'É necessário instalar o plugin <a href="{0}">{1}</a> para visualizar este conteúdo.',shared:'É necessário instalar os plugins <a href="{0}">{1}</a> e <a href="{2}">{3}</a> para visualizar este conteúdo.',either:'É necessário instalar o plugin <a href="{0}">{1}</a> ou o plugin <a href="{2}">{3}</a> para visualizar este conteúdo.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ro.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ro.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ro.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"ro",of:"din",loading:"se incarca",cancel:"Revocare",next:"Inainte",previous:"Inapoi",play:"Ruleaza",pause:"Pauza",close:"Inchide",errors:{single:'Pentru a vizualiza acest continut trebuie sa instalati acest plugin <a href="{0}">{1}</a>.',shared:'Pentru a vizualiza acest continut trebuie sa instalati pluginurile <a href="{0}">{1}</a> si <a href="{2}">{3}</a>.',either:'Pentru a vizualiza acest continut trebuie sa instalati pluginul <a href="{0}">{1}</a> sau <a href="{2}">{3}</a>.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ru.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ru.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-ru.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"ru",of:"из",loading:"загрузка",cancel:"Отмена",next:"Следующая",previous:"Предыдущая",play:"Пуск",pause:"Пауза",close:"Закрыть",errors:{single:'Вы должны установить для браузера плагин <a href="{0}">{1}</a>, чтобы просмотривать этот контент.',shared:'Чтобы просмотреть этот контент, вы должны установить и <a href="{0}">{1}</a>, и <a href="{2}">{3}</a>.',either:'Вы должны установить или <a href="{0}">{1}</a> плагин, или <a href="{2}">{3}</a>, чтобы просмотреть этот контент.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-sk.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-sk.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-sk.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"sk",of:"z",loading:"Načítava",cancel:"Zruš",next:"Ďalej",previous:"Predchádzjúci",play:"Prehraj",pause:"Zastav",close:"Zavrieť",errors:{single:'Na prezeranie obsahu je potrebné nainštalovať tento plugin <a href="{0}">{1}</a> do prehľiadača.',shared:'Na prezeranie obsahu je potrebné nainštalovať tieto pluginy <a href="{0}">{1}</a> a <a href="{2}">{3}</a> do prehľiadača.',either:'Na prezeranie obsahu je potrebné nainštalovať niektorý z týchto pluginov <a href="{0}">{1}</a> alebo <a href="{2}">{3}</a> do prehľiadača.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-sv.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-sv.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-sv.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"sv",of:"av",loading:"laddar",cancel:"Avbryt",next:"Nästa",previous:"Föregående",play:"Spela",pause:"Pausa",close:"Stäng",errors:{single:'Du måste installera insticksprogrammet <a href="{0}">{1}</a> för att kunna visa innehållet.',shared:'Du måste installera både insticksprogram <a href="{0}">{1}</a> och <a href="{2}">{3}</a> för att kunna visa innehållet.',either:'Du måste installera antingen insticksprogram <a href="{0}">{1}</a>, eller <a href="{2}">{3}</a> för att kunna visa innehållet.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-tr.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-tr.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-tr.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"tr",of:"/",loading:"yükleniyor",cancel:"İptal",next:"Sonraki",previous:"Önceki",play:"Oynat",pause:"Durdur",close:"Kapat",errors:{single:'Bu içeriği görmek için <a href="{0}">{1}</a> eklentisini kurmanız gerekiyor.',shared:'Bu içeriği görmek için <a href="{0}">{1}</a> ve <a href="{2}">{3}</a> eklentilerini kurmanız gerekiyor.',either:'Bu içeriği görmek için <a href="{0}">{1}</a> veya <a href="{2}">{3}</a> eklentilerinden birini kurmanız gerekiyor.'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-zh-CN.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-zh-CN.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-zh-CN.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"zh-CN",of:"的",loading:"读取中",cancel:"取消",next:"下一页",previous:"上一页",play:"执行",pause:"暂停",close:"关闭",errors:{single:'您必须安装 <a href="{0}">{1}</a> 这个浏览外挂程式才能检视这里的内容。',shared:'您必须安装 <a href="{0}">{1}</a> 和 <a href="{2}">{3}</a> 这两个浏览外挂程式才能检视这里的内容。',either:'您必须安装 <a href="{0}">{1}</a> 或者是 the <a href="{2}">{3}</a> 这两个其中一个浏览外挂程式才能检视这里的内容。'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-zh-TW.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-zh-TW.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/lang/shadowbox-zh-TW.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +if(typeof Shadowbox=="undefined"){throw"Unable to load Shadowbox language file, base library not found."}Shadowbox.LANG={code:"zh-TW",of:"的",loading:"讀取中",cancel:"取消",next:"下一頁",previous:"上一頁",play:"執行",pause:"暫停",close:"關閉",errors:{single:'您必須安裝 <a href="{0}">{1}</a> 這個瀏覽外掛程式才能檢視這裡的內容。',shared:'您必須安裝 <a href="{0}">{1}</a> 和 <a href="{2}">{3}</a> 這兩個瀏覽外掛程式才能檢視這裡的內容。',either:'您必須安裝 <a href="{0}">{1}</a> 或者是 the <a href="{2}">{3}</a> 這兩個其中一個瀏覽外掛程式才能檢視這裡的內容。'}}; \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-flv.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-flv.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-flv.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +(function(){var A=Shadowbox;var B=A.lib;Shadowbox.flv=function(D,C){this.id=D;this.obj=C;this.resizable=true;this.height=this.obj.height?parseInt(this.obj.height,10):300;if(A.getOptions().showMovieControls==true){this.height+=20}this.width=this.obj.width?parseInt(this.obj.width,10):300};Shadowbox.flv.prototype={markup:function(G){var E=this.obj;var F=G.resize_h;var I=G.resize_w;var L=A.getOptions();var C=String(L.autoplayMovies);var J=L.showMovieControls;var H=String(J);var K=F-(J?20:0);var D=["file="+this.obj.content,"height="+F,"width="+I,"autostart="+C,"displayheight="+K,"showicons="+H,"backcolor=0x000000","frontcolor=0xCCCCCC","lightcolor=0x557722"];return{tag:"object",id:this.id,name:this.id,type:"application/x-shockwave-flash",data:L.flvPlayer,children:[{tag:"param",name:"movie",value:L.flvPlayer},{tag:"param",name:"flashvars",value:D.join("&")},{tag:"param",name:"allowfullscreen",value:"true"}],height:F,width:I}},remove:function(){var C=B.get(this.id);if(C){B.remove(C)}}}})(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-html.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-html.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-html.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +(function(){var A=Shadowbox;var B=A.lib;Shadowbox.html=function(D,C){this.id=D;this.obj=C;this.height=this.obj.height?parseInt(this.obj.height,10):300;this.width=this.obj.width?parseInt(this.obj.width,10):500};Shadowbox.html.prototype={markup:function(C){return{tag:"div",id:this.id,cls:"html",html:this.obj.content}},remove:function(){var C=B.get(this.id);if(C){B.remove(C)}}}})(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-iframe.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-iframe.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-iframe.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +(function(){var A=Shadowbox;var B=A.lib;var D=A.getClient();Shadowbox.iframe=function(E,C){this.id=E;this.obj=C;this.height=this.obj.height?parseInt(this.obj.height,10):B.getViewportHeight();this.width=this.obj.width?parseInt(this.obj.width,10):B.getViewportWidth()};Shadowbox.iframe.prototype={markup:function(E){var C={tag:"iframe",id:this.id,name:this.id,height:"100%",width:"100%",frameborder:"0",marginwidth:"0",marginheight:"0",scrolling:"auto"};if(D.isIE){C.allowtransparency="true";if(!D.isIE7){C.src='javascript:false;document.write("");'}}return C},onLoad:function(){var C=(D.isIE)?B.get(this.id).contentWindow:window.frames[this.id];C.location=this.obj.content},remove:function(){var C=B.get(this.id);if(C){B.remove(C);if(D.isGecko){delete window.frames[this.id]}}}}})(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-img.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-img.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-img.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +(function(){var F=Shadowbox;var L=F.lib;var A=F.getClient();var I;var M;var J="shadowbox_drag_layer";var K;var D=function(){I={x:0,y:0,start_x:null,start_y:null}};var E=function(N,O,C){if(N){D();var P=["position:absolute","height:"+O+"px","width:"+C+"px","cursor:"+(A.isGecko?"-moz-grab":"move"),"background-color:"+(A.isIE?"#fff;filter:alpha(opacity=0)":"transparent")];L.append(L.get("shadowbox_body_inner"),'<div id="'+J+'" style="'+P.join(";")+'"></div>');L.addEvent(L.get(J),"mousedown",H)}else{var Q=L.get(J);if(Q){L.removeEvent(Q,"mousedown",H);L.remove(Q)}}};var H=function(N){L.preventDefault(N);var C=L.getPageXY(N);I.start_x=C[0];I.start_y=C[1];M=L.get("shadowbox_content");L.addEvent(document,"mousemove",G);L.addEvent(document,"mouseup",B);if(A.isGecko){L.setStyle(L.get(J),"cursor","-moz-grabbing")}};var B=function(){L.removeEvent(document,"mousemove",G);L.removeEvent(document,"mouseup",B);if(A.isGecko){L.setStyle(L.get(J),"cursor","-moz-grab")}};var G=function(Q){var O=F.getContent();var R=F.getDimensions();var P=L.getPageXY(Q);var N=P[0]-I.start_x;I.start_x+=N;I.x=Math.max(Math.min(0,I.x+N),R.inner_w-O.width);L.setStyle(M,"left",I.x+"px");var C=P[1]-I.start_y;I.start_y+=C;I.y=Math.max(Math.min(0,I.y+C),R.inner_h-O.height);L.setStyle(M,"top",I.y+"px")};Shadowbox.img=function(O,N){this.id=O;this.obj=N;this.resizable=true;this.ready=false;var C=this;K=new Image();K.onload=function(){C.height=C.obj.height?parseInt(C.obj.height,10):K.height;C.width=C.obj.width?parseInt(C.obj.width,10):K.width;C.ready=true;K.onload="";K=null};K.src=N.content};Shadowbox.img.prototype={markup:function(C){return{tag:"img",id:this.id,height:C.resize_h,width:C.resize_w,src:this.obj.content,style:"position:absolute"}},onLoad:function(){var C=F.getDimensions();if(C.drag&&F.getOptions().handleOversize=="drag"){E(true,C.resize_h,C.resize_w)}},remove:function(){var C=L.get(this.id);if(C){L.remove(C)}E(false);if(K){K.onload="";K=null}}}})(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-qt.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-qt.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-qt.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +(function(){var A=Shadowbox;var B=A.lib;var D=A.getClient();Shadowbox.qt=function(E,C){this.id=E;this.obj=C;this.height=this.obj.height?parseInt(this.obj.height,10):300;if(A.getOptions().showMovieControls==true){this.height+=16}this.width=this.obj.width?parseInt(this.obj.width,10):300};Shadowbox.qt.prototype={markup:function(H){var F=A.getOptions();var G=String(F.autoplayMovies);var E=String(F.showMovieControls);var C={tag:"object",id:this.id,name:this.id,height:this.height,width:this.width,children:[{tag:"param",name:"src",value:this.obj.content},{tag:"param",name:"scale",value:"aspect"},{tag:"param",name:"controller",value:E},{tag:"param",name:"autoplay",value:G}],kioskmode:"true"};if(D.isIE){C.classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";C.codebase="http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"}else{C.type="video/quicktime";C.data=this.obj.content}return C},remove:function(){try{document[this.id].Stop()}catch(E){}var C=B.get(this.id);if(C){B.remove(C)}}}})(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-swf.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-swf.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-swf.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +(function(){var A=Shadowbox;var B=A.lib;Shadowbox.swf=function(D,C){this.id=D;this.obj=C;this.resizable=true;this.height=this.obj.height?parseInt(this.obj.height,10):300;this.width=this.obj.width?parseInt(this.obj.width,10):300};Shadowbox.swf.prototype={markup:function(D){var C=A.getOptions().flashBgColor;return{tag:"object",id:this.id,name:this.id,type:"application/x-shockwave-flash",data:this.obj.content,children:[{tag:"param",name:"movie",value:this.obj.content},{tag:"param",name:"bgcolor",value:C}],height:D.resize_h,width:D.resize_w}},remove:function(){var C=B.get(this.id);if(C){B.remove(C)}}}})(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-wmp.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-wmp.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/player/shadowbox-wmp.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1 @@ +(function(){var A=Shadowbox;var B=A.lib;var D=A.getClient();Shadowbox.wmp=function(E,C){this.id=E;this.obj=C;this.height=this.obj.height?parseInt(this.obj.height,10):300;if(A.getOptions().showMovieControls){this.height+=(D.isIE?70:45)}this.width=this.obj.width?parseInt(this.obj.width,10):300};Shadowbox.wmp.prototype={markup:function(H){var F=A.getOptions();var G=F.autoplayMovies?1:0;var E={tag:"object",id:this.id,name:this.id,height:this.height,width:this.width,children:[{tag:"param",name:"autostart",value:G}]};if(D.isIE){var C=F.showMovieControls?"full":"none";E.classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6";E.children[E.children.length]={tag:"param",name:"url",value:this.obj.content};E.children[E.children.length]={tag:"param",name:"uimode",value:C}}else{var C=F.showMovieControls?1:0;E.type="video/x-ms-wmv";E.data=this.obj.content;E.children[E.children.length]={tag:"param",name:"showcontrols",value:C}}return E},remove:function(){if(D.isIE){try{window[this.id].controls.stop();window[this.id].URL="non-existent.wmv";window[this.id]=function(){}}catch(E){}}var C=B.get(this.id);if(C){setTimeout(function(){B.remove(C)},10)}}}})(); \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/README =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/README,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/README 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,58 @@ +This file contains instructions that should be helpful when creating skins for +the Shadowbox media viewer. If you create a skin that looks good, and you would +like to include it in the official Shadowbox distribution, please don't hesitate +to contact me. + +INTRODUCTION + +A Shadowbox "skin" is merely a directory of files that determines what +Shadowbox will look like. The name of the skin will be the name of the directory +in which it resides. At the very minimum, this directory must contain at +least two files: + + 1) skin.js + 2) skin.css + +If you don't understand something that I write in this file and you'd rather see +some code, you can always refer to the "classic" skin that is included in the +default distribution. + +SKIN.JS + +The first file (skin.js) determines the actual HTML markup that Shadowbox will +use. Inside this file, a public static property named SKIN should be defined on +the Shadowbox object. This property itself will be an object containing the +following properties: + + 1) markup + 2) png_fix + +The markup property should be a string that defines the HTML markup to be used +with Shadowbox. The script expects most of these elements to be present, so you +should leave the most basic structural elements such as #shadowbox_container, +#shadowbox_body, etc. However, I've tried to make the script flexible enough to +allow for some rearranging of elements such as the navigation controls. + +The markup string may contain placeholders that will be translated into the +appropriate language when the language file loads. These placeholders should +contain the name of one of the Shadowbox.LANG properties surrounded by curly +brackets (e.g. {cancel}). + +The png_fix property should contain an array of element id's that are using +transparent PNG's for backgrounds. Transparent PNG support is built in to the +script for browsers (such as IE6) that do not natively support it. This behavior +can be seen in the classic skin for the navigation icons and the transparent +overlay. + +SKIN.CSS + +The heart of a Shadowbox skin is the CSS file. Most of the weird CSS quirks have +already been worked out in the classic skin, so use this skin as a reference +when creating your own. I have placed comments by certain rules that are +important for Shadowbox to display properly. Disclaimer: I don't have a lot of +time to help you with your own CSS issues, so only attempt this if you know what +you're doing or you're willing to put the time in to fix your bugs yourself. + +The CSS file defines the colors, images, and overall appearance of the +Shadowbox media viewer. You may use transparent PNG's as the script contains +support for browsers (such as IE6) that do not support them. Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons.psd =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons.psd,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons.psd 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,429 @@ +8BPS��������������P��������dT8BIM����������8BIM%�������\�/���{g��dպ8BIM$����9O<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> +<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.1-c036 46.276720, Mon Feb 19 2007 22:13:43 "> + <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <rdf:Description rdf:about="" + xmlns:dc="http://purl.org/dc/elements/1.1/"> + <dc:format>application/vnd.adobe.photoshop</dc:format> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xap="http://ns.adobe.com/xap/1.0/"> + <xap:CreatorTool>Adobe Photoshop CS3 Macintosh</xap:CreatorTool> + <xap:CreateDate>2008-03-24T10:00:57-06:00</xap:CreateDate> + <xap:ModifyDate>2008-03-26T12:29:01-06:00</xap:ModifyDate> + <xap:MetadataDate>2008-03-26T12:29:01-06:00</xap:MetadataDate> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/"> + <xapMM:DocumentID>uuid:98CAAA4D1BFBDC1192E8EED6F1FF6EB9</xapMM:DocumentID> + <xapMM:InstanceID>uuid:15925863C2FCDC11827EEB66695C53A4</xapMM:InstanceID> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:tiff="http://ns.adobe.com/tiff/1.0/"> + <tiff:Orientation>1</tiff:Orientation> + <tiff:XResolution>720000/10000</tiff:XResolution> + <tiff:YResolution>720000/10000</tiff:YResolution> + <tiff:ResolutionUnit>2</tiff:ResolutionUnit> + <tiff:NativeDigest>256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;444728C405433DC1BDBD53FF960C723B</tiff:NativeDigest> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:exif="http://ns.adobe.com/exif/1.0/"> + <exif:PixelXDimension>80</exif:PixelXDimension> + <exif:PixelYDimension>16</exif:PixelYDimension> + <exif:ColorSpace>-1</exif:ColorSpace> + <exif:NativeDigest>36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;E29A88180100572DB67EC4A8A8665251</exif:NativeDigest> + </rdf:Description> + <rdf:Description rdf:about="" + xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"> + <photoshop:ColorMode>3</photoshop:ColorMode> + <photoshop:History/> + </rdf:Description> + </rdf:RDF> +</x:xmpmeta> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +<?xpacket end="w"?>�8BIM������<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>com.apple.print.PageFormat.PMHorizontalRes</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PageFormat.PMHorizontalRes</key> + <real>72</real> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-24T16:00:58Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PageFormat.PMOrientation</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PageFormat.PMOrientation</key> + <integer>1</integer> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-24T16:00:58Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PageFormat.PMScaling</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PageFormat.PMScaling</key> + <real>1</real> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-24T16:00:58Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PageFormat.PMVerticalRes</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PageFormat.PMVerticalRes</key> + <real>72</real> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-24T16:00:58Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PageFormat.PMVerticalScaling</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PageFormat.PMVerticalScaling</key> + <real>1</real> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-24T16:00:58Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.subTicket.paper_info_ticket</key> + <dict> + <key>com.apple.print.PageFormat.PMAdjustedPageRect</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PageFormat.PMAdjustedPageRect</key> + <array> + <real>0.0</real> + <real>0.0</real> + <real>734</real> + <real>576</real> + </array> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-26T18:00:26Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PageFormat.PMAdjustedPaperRect</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PageFormat.PMAdjustedPaperRect</key> + <array> + <real>-18</real> + <real>-18</real> + <real>774</real> + <real>594</real> + </array> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-26T18:00:26Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PaperInfo.PMPaperName</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.print.pm.PostScript</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PaperInfo.PMPaperName</key> + <string>na-letter</string> + <key>com.apple.print.ticket.client</key> + <string>com.apple.print.pm.PostScript</string> + <key>com.apple.print.ticket.modDate</key> + <date>2003-07-01T17:49:36Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>1</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PaperInfo.PMUnadjustedPageRect</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.print.pm.PostScript</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PaperInfo.PMUnadjustedPageRect</key> + <array> + <real>0.0</real> + <real>0.0</real> + <real>734</real> + <real>576</real> + </array> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-24T16:00:58Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PaperInfo.PMUnadjustedPaperRect</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.print.pm.PostScript</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PaperInfo.PMUnadjustedPaperRect</key> + <array> + <real>-18</real> + <real>-18</real> + <real>774</real> + <real>594</real> + </array> + <key>com.apple.print.ticket.client</key> + <string>com.apple.printingmanager</string> + <key>com.apple.print.ticket.modDate</key> + <date>2008-03-24T16:00:58Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>0</integer> + </dict> + </array> + </dict> + <key>com.apple.print.PaperInfo.ppd.PMPaperName</key> + <dict> + <key>com.apple.print.ticket.creator</key> + <string>com.apple.print.pm.PostScript</string> + <key>com.apple.print.ticket.itemArray</key> + <array> + <dict> + <key>com.apple.print.PaperInfo.ppd.PMPaperName</key> + <string>US Letter</string> + <key>com.apple.print.ticket.client</key> + <string>com.apple.print.pm.PostScript</string> + <key>com.apple.print.ticket.modDate</key> + <date>2003-07-01T17:49:36Z</date> + <key>com.apple.print.ticket.stateFlag</key> + <integer>1</integer> + </dict> + </array> + </dict> + <key>com.apple.print.ticket.APIVersion</key> + <string>00.20</string> + <key>com.apple.print.ticket.privateLock</key> + <false/> + <key>com.apple.print.ticket.type</key> + <string>com.apple.print.PaperInfoTicket</string> + </dict> + <key>com.apple.print.ticket.APIVersion</key> + <string>00.20</string> + <key>com.apple.print.ticket.privateLock</key> + <false/> + <key>com.apple.print.ticket.type</key> + <string>com.apple.print.PageFormatTicket</string> +</dict> +</plist> +8BIM�������H�����H����8BIM&���������������?���8BIM +��������x8BIM��������8BIM������ ���������8BIM +�������8BIM'����� +��������8BIM������H�/ff��lff�������/ff������������2����Z���������5����-��������8BIM������p������������������������������������������������������������������������������������������������������������8BIM�������8BIM���������8BIM0�����8BIM-���������8BIM�����$�����@��@�������������������8BIM���������8BIM����?�����������������P����i�c�o�n�s���������������������������������P�����������������������������������������������null������boundsObjc���������Rct1�������Top long��������Leftlong��������Btomlong�������Rghtlong���P���slicesVlLs���Objc��������slice������sliceIDlong�������groupIDlong�������originenum���ESliceOrigin��� +autoGenerated����Typeenum��� +ESliceType����Img ���boundsObjc���������Rct1�������Top long��������Leftlong��������Btomlong�������Rghtlong���P���urlTEXT���������nullTEXT���������MsgeTEXT��������altTagTEXT��������cellTextIsHTMLbool���cellTextTEXT�������� horzAlignenum���ESliceHorzAlign���default��� vertAlignenum���ESliceVertAlign���default���bgColorTypeenum���ESliceBGColorType����None��� topOutsetlong������� +leftOutsetlong�������bottomOutsetlong�������rightOutsetlong�����8BIM(��������?�������8BIM������8BIM��������&8BIM�����������P��������������������JFIF���H�H�����Adobe_CM����Adobe�d��������� + + + +�����P"�������?���������� +��������� +�3�!1AQa"q�2���B#$R�b34r��C%�S���cs5���&D�TdE£t6�U�e���u��F'���������������Vfv��������7GWgw���������5�!1AQaq"2����B#�R��3$b�r��CScs4�%���&5��D�T�dEU6te����u��F���������������Vfv��������'7GWgw����������?��~��P�s�u���m컦V��ڜ��Ev]�P��s���cؗ�_�7���J�ٸv�e�J����ah!���/N���u��{��N����'���ӳi��T�PkhsA5�W��o�ľ��m�}{��\<&��zmE��Z ,����{�{�rJs���[��/V��[k�'�*��v���7�����*]��T�����W��v +Yc�R���o��h�C�Ň�o�Y�����k]l��qf�n�,�骟Y���_���k���(�o�u4�k�߿g�zJn��̼������u������KZ��"��6�����w��/�_R�YNK7[�3�Q����{�����k���#�����T�\����k�9�[�袯�Z��_��ľ��x�����K��Xmhk��ݦ�����bJA�;�fW�'de?u=7 �}�ws���Ǧ=��?�3��������>߬�۩>�aQ�s^�vE��s�����?q�W�r:vQ6���<9�SU�n�}���LĮ��~ԫ~�ul���p�9.����S���Js��}\g_�.�\������/��U��}v~e�Z���V��q1�����͙=�} +��Z�������_/�_X0�y9�����t��U����#����}W�����ы�v)��6Y��\6���7:���j���������8BIM!�����U�������A�d�o�b�e� �P�h�o�t�o�s�h�o�p����A�d�o�b�e� �P�h�o�t�o�s�h�o�p� �C�S�3����8BIM"����.MM�*������������������b�������j(�������1�������r2���������i������������� +����'� +����'Adobe Photoshop CS3 Macintosh�2008:03:26 12:29:01�������������������P����������������������������������&(�������������.���������������H������H���8BIM�������maniIRFR����8BIMAnDs����������������null�������AFStlong��������FrInVlLs���Objc���������null�������FrIDlong"V������FStsVlLs���Objc���������null�������FsIDlong��������AFrmlong��������FsFrVlLs���long"V������LCntlong������8BIMRoll�����������8BIM������mfri�������������������������t���������������`������B�����B����B����B8BIMnorm��������������(���������������������������������������� +background�8BIMluni������ +�b�a�c�k�g�r�o�u�n�d8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMfxrp�������������������������������N�����������>����>����>8BIMnorm�������������(����������������������������������������shapes�8BIMSoCo���p������������null�������Clr Objc���������RGBC�������Rd doub@o����������Grn doub@o����������Bl doub@o������8BIMvmsk��L����������������������������������������������������������������������������������L�����L�����L������6�ۘ��6�ۘ��6�ۘ����Z[��CC��Z[��CC��Z[��CC��������������������������������������������5�[���F�5�[���F�5�[���F��Lz���K��Lz���K��Lz���K�����O�ۡ!���O�ۡ!���O�ۡ!���/������/������/���������������������������������~�������~�������~�������n������n������n����&x!�n���&x!�n���&x!�n��������������������������������������������������������34�����34�����34��&x!��34�&x!��34�&x!��34������������������������������;�������;�������;���&x!���f�&x!���f�&x!���f�������f������f������f������������������������������n�������n�������n���&x!����&x!����&x!���������������������������������������������������Z�������Z�������Z�������Dff����Dff����Dff��&x!�Dff�&x!�Dff�&x!�Dff�������������������������0������0������0�������0�����0�����0����������������������������������������������������������������0������0������0�������0���&��0���&��0���&������&�����&�����&��������������������8BIMluni�������s�h�a�p�e�s8BIMlyid������8BIMclbl������8BIMinfx�������8BIMknko�������8BIMlspf�������8BIMlclr�����������8BIMfxrp���?�������?���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������1�9�<�>�>�9�=�<�;�7�/�������6���-���-���$���$���Z��-Z���-����� ���Z���Z��`���`���Z��]��Z��-Z���-���������B����B��N����N����r���������Z��-Z���-������-�� ���-�����-�� 6�����6����� +*�������H��Z��-Z���-�������H�� +����������� +$�����$������ *������H���Z��-Z���-�������u������������������������*����H���Z��-Z���-�������������N����N���Z���Z���������� ���Z��-Z���-�������������x�����x��������������������� ���Z��-Z���-��������� ������������ ������������ ���H-��� ��Z��-Z���-�����x�� ���������� ���������� +���H��-�����Z��-Z���-����T���� ���� �� ɖ�� ɖ���H��-�9���3 �3� ���0��x��x��r��r������������������������������������������������������������������������������������������������������������������������������������������������������������8BIMPatt����8BIMFMsk��������������2�����3�;�>�?�?�:�>�>�=�9�0������3�;�>�?�?�:�>�>�=�9�0������3�;�>�?�?�:�>�>�=�9�0���������6���-���-���$���$�����Z��-Z���-����� ���Z���Z��`���`���Z��]�����Z��-Z���-���������B����B��N����N����r������������Z��-Z���-������-�� ���-�����-�� 6�����6����� *�������H�����Z��-Z���-�������H�� +����������� +$�����$������*������H�����Z��-Z���-�������u������������������������*����H�����Z��-Z���-�������������N����N���Z���Z���������� �����Z��-Z���-�������������x�����x��������������������� �����Z��-Z���-��������� ������������ ���������������H-��� �����Z��-Z���-�����x�� ���������� ���������� ���H��-��������Z��-Z���-����T���� ���� �� ɖ�� ɖ���H��-�9������3 �3� ���0��x��x��r��r�������������������6���-���-���$���$�����Z��-Z���-����� ���Z���Z��`���`���Z��]�����Z��-Z���-���������B����B��N����N����r������������Z��-Z���-������-�� ���-�����-�� 6�����6����� *�������H�����Z��-Z���-�������H�� +����������� +$�����$������*������H�����Z��-Z���-�������u������������������������*����H�����Z��-Z���-�������������N����N���Z���Z���������� �����Z��-Z���-�������������x�����x��������������������� �����Z��-Z���-��������� ������������ ���������������H-��� �����Z��-Z���-�����x�� ���������� ���������� ���H��-��������Z��-Z���-����T���� ���� �� ɖ�� ɖ���H��-�9������3 �3� ���0��x��x��r��r�������������������6���-���-���$���$�����Z��-Z���-����� ���Z���Z��`���`���Z��]�����Z��-Z���-���������B����B��N����N����r������������Z��-Z���-������-�� ���-�����-�� 6�����6����� *�������H�����Z��-Z���-�������H�� +����������� +$�����$������*������H�����Z��-Z���-�������u������������������������*����H�����Z��-Z���-�������������N����N���Z���Z���������� �����Z��-Z���-�������������x�����x��������������������� �����Z��-Z���-��������� ������������ ���������������H-��� �����Z��-Z���-�����x�� ���������� ���������� ���H��-��������Z��-Z���-����T���� ���� �� ɖ�� ɖ���H��-�9������3 �3� ���0��x��x��r��r������������ \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/loading.gif =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/loading.gif,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/skin.css =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/skin.css,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/skin.css 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,197 @@ +/** + * The "classic" theme CSS for Shadowbox. + * + * This file is part of Shadowbox. + * + * Shadowbox is an online media viewer application that supports all of the + * web's most popular media publishing formats. Shadowbox is written entirely + * in JavaScript and CSS and is highly customizable. Using Shadowbox, website + * authors can showcase a wide assortment of media in all major browsers without + * navigating users away from the linking page. + * + * Shadowbox is released under version 3.0 of the Creative Commons Attribution- + * Noncommercial-Share Alike license. This means that it is absolutely free + * for personal, noncommercial use provided that you 1) make attribution to the + * author and 2) release any derivative work under the same or a similar + * license. + * + * If you wish to use Shadowbox for commercial purposes, licensing information + * can be found at http://mjijackson.com/shadowbox/. + * + * @author Michael J. I. Jackson <mjijackson@gmail.com> + * @copyright 2007-2008 Michael J. I. Jackson + * @license http://creativecommons.org/licenses/by-nc-sa/3.0/ + * @version SVN: $Id: skin.css,v 1.1 2009/04/11 15:56:13 hamiltonc Exp $ + */ + +/*_____________________________________________________ container & overlay */ +#shadowbox_container, #shadowbox_overlay { + top: 0; + left: 0; + height: 100%; + width: 100%; + margin: 0; + padding: 0; +} +#shadowbox_container { + position: fixed; + display: block; + visibility: hidden; + z-index: 999; + text-align: center; /* centers #shadowbox in quirks and IE */ +} +#shadowbox_overlay { + position: absolute; +} + +/*_______________________________________________________________ shadowbox */ +#shadowbox { + position: relative; + margin: 0 auto; + text-align: left; /* reset left alignment */ +} + +/*____________________________________________________________________ body */ +#shadowbox_body { + position: relative; + margin: 0; + padding: 0; + border: 1px solid #333; + overflow: hidden; +} +#shadowbox_body_inner { + position: relative; + height: 100%; +} +#shadowbox_content.html { + height: 100%; + overflow: auto; /* make html content scrollable */ +} + +/*_________________________________________________________________ loading */ +#shadowbox_loading { + position: absolute; + top: 0; + width: 100%; + height: 100%; +} +#shadowbox_body, #shadowbox_loading { + background-color: #060606; /* should match loading image background color */ +} +#shadowbox_loading_indicator { + float: left; + margin: 10px 10px 0 10px; + height: 32px; + width: 32px; + background-image: url(loading.gif); + background-repeat: no-repeat; +} +#shadowbox_loading span { + font-family: 'Lucida Grande', Tahoma, sans-serif; + font-size: 10px; + float: left; + margin-top: 16px; +} +#shadowbox_loading span a:link, +#shadowbox_loading span a:visited { + color: #fff; + text-decoration: underline; +} + +/*____________________________________________________________ title & info */ +#shadowbox_title, #shadowbox_info { + position: relative; + margin: 0; /* these must have no vertical margin or padding */ + padding: 0; + overflow: hidden; +} +#shadowbox_title_inner, #shadowbox_info_inner { + position: relative; + font-family: 'Lucida Grande', Tahoma, sans-serif; + line-height: 16px; +} +#shadowbox_title { + height: 26px; +} +#shadowbox_title_inner { + font-size: 16px; + padding: 5px 0; + color: #fff; +} +#shadowbox_info { + height: 20px; +} +#shadowbox_info_inner { + font-size: 12px; + color: #fff; +} + +/*_____________________________________________________________________ nav */ +#shadowbox_nav { + float: right; + height: 16px; + padding: 2px 0; + width: 45%; +} +#shadowbox_nav a { + display: block; + float: right; + height: 16px; + width: 16px; + margin-left: 3px; + cursor: pointer; +} +#shadowbox_nav_close { + background-image: url(icons/close.png); + background-repeat: no-repeat; +} +#shadowbox_nav_next { + background-image: url(icons/next.png); + background-repeat: no-repeat; +} +#shadowbox_nav_previous { + background-image: url(icons/previous.png); + background-repeat: no-repeat; +} +#shadowbox_nav_play { + background-image: url(icons/play.png); + background-repeat: no-repeat; +} +#shadowbox_nav_pause { + background-image: url(icons/pause.png); + background-repeat: no-repeat; +} + +/*_________________________________________________________________ counter */ +#shadowbox_counter { + float: left; + padding: 2px 0; + width: 45%; +} +#shadowbox_counter a { + padding: 0 4px 0 0; + text-decoration: none; + cursor: pointer; + color: #fff; +} +#shadowbox_counter a.shadowbox_counter_current { + text-decoration: underline; +} + +/*___________________________________________________________________ clear */ +div.shadowbox_clear { + clear: both; /* clear floating counter & nav */ +} + +/*________________________________________________________________ messages */ +div.shadowbox_message { + font-family: 'Lucida Grande', Tahoma, sans-serif; + font-size: 12px; + padding: 10px; + text-align: center; +} +div.shadowbox_message a:link, +div.shadowbox_message a:visited { + color: #fff; + text-decoration: underline; +} Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/skin.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/skin.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/skin.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,79 @@ +/** + * The "classic" theme markup for Shadowbox. + * + * This file is part of Shadowbox. + * + * Shadowbox is an online media viewer application that supports all of the + * web's most popular media publishing formats. Shadowbox is written entirely + * in JavaScript and CSS and is highly customizable. Using Shadowbox, website + * authors can showcase a wide assortment of media in all major browsers without + * navigating users away from the linking page. + * + * Shadowbox is released under version 3.0 of the Creative Commons Attribution- + * Noncommercial-Share Alike license. This means that it is absolutely free + * for personal, noncommercial use provided that you 1) make attribution to the + * author and 2) release any derivative work under the same or a similar + * license. + * + * If you wish to use Shadowbox for commercial purposes, licensing information + * can be found at http://mjijackson.com/shadowbox/. + * + * @author Michael J. I. Jackson <mjijackson@gmail.com> + * @copyright 2007-2008 Michael J. I. Jackson + * @license http://creativecommons.org/licenses/by-nc-sa/3.0/ + * @version SVN: $Id: skin.js,v 1.1 2009/04/11 15:56:13 hamiltonc Exp $ + */ + +if(typeof Shadowbox == 'undefined'){ + throw 'Unable to load Shadowbox skin, base library not found.'; +} + +/** + * The HTML markup to use for Shadowbox. + * + * IMPORTANT: The script depends on most of these elements being present. + * + * @property {Object} SKIN + * @public + * @static + */ +Shadowbox.SKIN = { + + markup: '<div id="shadowbox_container">' + + '<div id="shadowbox_overlay"></div>' + + '<div id="shadowbox">' + + '<div id="shadowbox_title">' + + '<div id="shadowbox_title_inner"></div>' + + '</div>' + + '<div id="shadowbox_body">' + + '<div id="shadowbox_body_inner"></div>' + + '<div id="shadowbox_loading">' + + '<div id="shadowbox_loading_indicator"></div>' + + '<span><a onclick="Shadowbox.close();">{cancel}</a></span>' + + '</div>' + + '</div>' + + '<div id="shadowbox_info">' + + '<div id="shadowbox_info_inner">' + + '<div id="shadowbox_counter"></div>' + + '<div id="shadowbox_nav">' + + '<a id="shadowbox_nav_close" title="{close}" onclick="Shadowbox.close()"></a>' + + '<a id="shadowbox_nav_next" title="{next}" onclick="Shadowbox.next()"></a>' + + '<a id="shadowbox_nav_play" title="{play}" onclick="Shadowbox.play()"></a>' + + '<a id="shadowbox_nav_pause" title="{pause}" onclick="Shadowbox.pause()"></a>' + + '<a id="shadowbox_nav_previous" title="{previous}" onclick="Shadowbox.previous()"></a>' + + '</div>' + + '<div class="shadowbox_clear"></div>' + + '</div>' + + '</div>' + + '</div>' + + '</div>', + + png_fix: [ + 'shadowbox_nav_close', + 'shadowbox_nav_next', + 'shadowbox_nav_play', + 'shadowbox_nav_pause', + 'shadowbox_nav_previous' + ] + +}; Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/close.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/close.png,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/next.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/next.png,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/pause.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/pause.png,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/play.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/play.png,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/previous.png =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/shadowbox/skin/classic/icons/previous.png,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/fileprogress.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/fileprogress.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/fileprogress.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,130 @@ +function FileProgress(fileObj, target_id) { + this.file_progress_id = fileObj.id; + + this.opacity = 100; + this.height = 0; + + this.fileProgressWrapper = document.getElementById(this.file_progress_id); + if (!this.fileProgressWrapper) { + this.fileProgressWrapper = document.createElement("div"); + this.fileProgressWrapper.className = "progressWrapper"; + this.fileProgressWrapper.id = this.file_progress_id; + + this.fileProgressElement = document.createElement("div"); + this.fileProgressElement.className = "progressContainer"; + + var progressCancel = document.createElement("a"); + progressCancel.className = "progressCancel"; + progressCancel.href = "#"; + progressCancel.style.visibility = "hidden"; + progressCancel.appendChild(document.createTextNode(" ")); + + var progressText = document.createElement("div"); + progressText.className = "progressName"; + progressText.appendChild(document.createTextNode(fileObj.name)); + + var progressBar = document.createElement("div"); + progressBar.className = "progressBarInProgress"; + + var progressStatus = document.createElement("div"); + progressStatus.className = "progressBarStatus"; + progressStatus.innerHTML = " "; + + this.fileProgressElement.appendChild(progressCancel); + this.fileProgressElement.appendChild(progressText); + this.fileProgressElement.appendChild(progressStatus); + this.fileProgressElement.appendChild(progressBar); + + this.fileProgressWrapper.appendChild(this.fileProgressElement); + + document.getElementById(target_id).appendChild(this.fileProgressWrapper); + } else { + this.fileProgressElement = this.fileProgressWrapper.firstChild; + } + + this.height = this.fileProgressWrapper.offsetHeight; + +} +FileProgress.prototype.SetProgress = function(percentage) { + this.fileProgressElement.className = "progressContainer green"; + this.fileProgressElement.childNodes[3].className = "progressBarInProgress"; + this.fileProgressElement.childNodes[3].style.width = percentage + "%"; +} +FileProgress.prototype.SetComplete = function() { + this.fileProgressElement.className = "progressContainer blue"; + this.fileProgressElement.childNodes[3].className = "progressBarComplete"; + this.fileProgressElement.childNodes[3].style.width = ""; + + var oSelf = this; + setTimeout(function() { oSelf.Disappear(); }, 10000); +} +FileProgress.prototype.SetError = function() { + this.fileProgressElement.className = "progressContainer red"; + this.fileProgressElement.childNodes[3].className = "progressBarError"; + this.fileProgressElement.childNodes[3].style.width = ""; + var oSelf = this; + setTimeout(function() { oSelf.Disappear(); }, 5000); +} +FileProgress.prototype.SetCancelled = function() { + this.fileProgressElement.className = "progressContainer"; + this.fileProgressElement.childNodes[3].className = "progressBarError"; + this.fileProgressElement.childNodes[3].style.width = ""; + + var oSelf = this; + setTimeout(function() { oSelf.Disappear(); }, 2000); +} +FileProgress.prototype.SetStatus = function(status) { + this.fileProgressElement.childNodes[2].innerHTML = status; +} +FileProgress.prototype.ToggleCancel = function(show, upload_obj) { + this.fileProgressElement.childNodes[0].style.visibility = show ? "visible" : "hidden"; + if (upload_obj) { + var file_id = this.file_progress_id; + var oSelf = this; + this.fileProgressElement.childNodes[0].onclick = function() { + upload_obj.cancelUpload(file_id,false); + oSelf.SetCancelled(); + oSelf.SetStatus(acs_lang_text.uploadcancel || "Cancelled (This item will be removed shortly)"); + oSelf.ToggleCancel(false); + return false; + }; + } +} +FileProgress.prototype.Disappear = function() { + + var reduce_opacity_by = 15; + var reduce_height_by = 4; + var rate = 30; // 15 fps + + if (this.opacity > 0) { + this.opacity -= reduce_opacity_by; + if (this.opacity < 0) this.opacity = 0; + + if (this.fileProgressWrapper.filters) { + try { + this.fileProgressWrapper.filters.item("DXImageTransform.Microsoft.Alpha").opacity = this.opacity; + } catch (e) { + // If it is not set initially, the browser will throw an error. This will set it if it is not set yet. + this.fileProgressWrapper.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + this.opacity + ')'; + } + } else { + this.fileProgressWrapper.style.opacity = this.opacity / 100; + } + } + + if (this.height > 0) { + this.height -= reduce_height_by; + if (this.height < 0) this.height = 0; + + this.fileProgressWrapper.style.height = this.height + "px"; + } + + if (this.height > 0 || this.opacity > 0) { + var oSelf = this; + setTimeout(function() { oSelf.Disappear(); }, rate); + } else { + this.fileProgressWrapper.style.display = "none"; + } +} + + Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/handlers.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/handlers.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/handlers.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,202 @@ + +/* This is an example of how to cancel all the files queued up. It's made somewhat generic. Just pass your SWFUpload +object in to this method and it loops through cancelling the uploads. */ +function cancelQueue(instance) { + document.getElementById(instance.customSettings.cancelButtonId).disabled = true; + instance.stopUpload(); + var stats; + + do { + stats = instance.getStats(); + instance.cancelUpload(); + } while (stats.files_queued !== 0); + +} + +/* ********************** + Event Handlers + These are my custom event handlers to make my + web application behave the way I went when SWFUpload + completes different tasks. These aren't part of the SWFUpload + package. They are part of my application. Without these none + of the actions SWFUpload makes will show up in my application. + ********************** */ +function fileDialogStart() { + /* I don't need to do anything here */ +} +function fileQueued(file) { + try { + // You might include code here that prevents the form from being submitted while the upload is in + // progress. Then you'll want to put code in the Queue Complete handler to "unblock" the form + var progress = new FileProgress(file, this.customSettings.progressTarget); + progress.setStatus("Pending..."); + progress.toggleCancel(true, this); + + } catch (ex) { + this.debug(ex); + } + +} + +function fileQueueError(file, errorCode, message) { + try { + if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) { + alert("You have attempted to queue too many files.\n" + (message === 0 ? "You have reached the upload limit." : "You may select " + (message > 1 ? "up to " + message + " files." : "one file."))); + return; + } + + var progress = new FileProgress(file, this.customSettings.progressTarget); + progress.setError(); + progress.toggleCancel(false); + + switch (errorCode) { + case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT: + progress.setStatus("File is too big."); + this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE: + progress.setStatus("Cannot upload Zero Byte files."); + this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE: + progress.setStatus("Invalid File Type."); + this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED: + alert("You have selected too many files. " + (message > 1 ? "You may only add " + message + " more files" : "You cannot add any more files.")); + break; + default: + if (file !== null) { + progress.setStatus("Unhandled Error"); + } + this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + } + } catch (ex) { + this.debug(ex); + } +} + +function fileDialogComplete(numFilesSelected, numFilesQueued) { + try { + if (this.getStats().files_queued > 0) { + document.getElementById(this.customSettings.cancelButtonId).disabled = false; + } + + /* I want auto start and I can do that here */ + this.startUpload(); + } catch (ex) { + this.debug(ex); + } +} + +function uploadStart(file) { + try { + /* I don't want to do any file validation or anything, I'll just update the UI and return true to indicate that the upload should start */ + var progress = new FileProgress(file, this.customSettings.progressTarget); + progress.setStatus("Uploading..."); + progress.toggleCancel(true, this); + } + catch (ex) { + } + + return true; +} + +function uploadProgress(file, bytesLoaded, bytesTotal) { + + try { + var percent = Math.ceil((bytesLoaded / bytesTotal) * 100); + + var progress = new FileProgress(file, this.customSettings.progressTarget); + progress.setProgress(percent); + progress.setStatus("Uploading..."); + } catch (ex) { + this.debug(ex); + } +} + +function uploadSuccess(file, serverData) { + try { + var progress = new FileProgress(file, this.customSettings.progressTarget); + progress.setComplete(); + progress.setStatus("Complete."); + progress.toggleCancel(false); + + } catch (ex) { + this.debug(ex); + } +} + +function uploadComplete(file) { + try { + /* I want the next upload to continue automatically so I'll call startUpload here */ + if (this.getStats().files_queued === 0) { + document.getElementById(this.customSettings.cancelButtonId).disabled = true; + } else { + this.startUpload(); + } + } catch (ex) { + this.debug(ex); + } + +} + +function uploadError(file, errorCode, message) { + try { + var progress = new FileProgress(file, this.customSettings.progressTarget); + progress.setError(); + progress.toggleCancel(false); + + switch (errorCode) { + case SWFUpload.UPLOAD_ERROR.HTTP_ERROR: + progress.setStatus("Upload Error: " + message); + this.debug("Error Code: HTTP Error, File name: " + file.name + ", Message: " + message); + break; + case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL: + progress.setStatus("Configuration Error"); + this.debug("Error Code: No backend file, File name: " + file.name + ", Message: " + message); + break; + case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED: + progress.setStatus("Upload Failed."); + this.debug("Error Code: Upload Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.UPLOAD_ERROR.IO_ERROR: + progress.setStatus("Server (IO) Error"); + this.debug("Error Code: IO Error, File name: " + file.name + ", Message: " + message); + break; + case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR: + progress.setStatus("Security Error"); + this.debug("Error Code: Security Error, File name: " + file.name + ", Message: " + message); + break; + case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED: + progress.setStatus("Upload limit exceeded."); + this.debug("Error Code: Upload Limit Exceeded, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND: + progress.setStatus("File not found."); + this.debug("Error Code: The file was not found, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED: + progress.setStatus("Failed Validation. Upload skipped."); + this.debug("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED: + if (this.getStats().files_queued === 0) { + document.getElementById(this.customSettings.cancelButtonId).disabled = true; + } + progress.setStatus("Cancelled"); + progress.setCancelled(); + break; + case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED: + progress.setStatus("Stopped"); + break; + default: + progress.setStatus("Unhandled Error: " + error_code); + this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message); + break; + } + } catch (ex) { + this.debug(ex); + } +} \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/license.txt =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/license.txt,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/license.txt 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,12 @@ +/** + * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com + * + * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/, http://www.vinterwebb.se/ + * + * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilz�n and Mammon Media and is released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + */ \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/swfupload.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/swfupload.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/swfupload.js 11 Apr 2009 15:56:13 -0000 1.1 @@ -0,0 +1,945 @@ +/** + * SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com + * + * mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/, http://www.vinterwebb.se/ + * + * SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilz�n and Mammon Media and is released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + * SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + */ + + +/* ******************* */ +/* Constructor & Init */ +/* ******************* */ +var SWFUpload; + +if (SWFUpload == undefined) { + SWFUpload = function (settings) { + this.initSWFUpload(settings); + }; +} + +SWFUpload.prototype.initSWFUpload = function (settings) { + try { + this.customSettings = {}; // A container where developers can place their own settings associated with this instance. + this.settings = settings; + this.eventQueue = []; + this.movieName = "SWFUpload_" + SWFUpload.movieCount++; + this.movieElement = null; + + + // Setup global control tracking + SWFUpload.instances[this.movieName] = this; + + // Load the settings. Load the Flash movie. + this.initSettings(); + this.loadFlash(); + this.displayDebugInfo(); + } catch (ex) { + delete SWFUpload.instances[this.movieName]; + throw ex; + } +}; + +/* *************** */ +/* Static Members */ +/* *************** */ +SWFUpload.instances = {}; +SWFUpload.movieCount = 0; +SWFUpload.version = "2.2.0 Beta 3"; +SWFUpload.QUEUE_ERROR = { + QUEUE_LIMIT_EXCEEDED : -100, + FILE_EXCEEDS_SIZE_LIMIT : -110, + ZERO_BYTE_FILE : -120, + INVALID_FILETYPE : -130 +}; +SWFUpload.UPLOAD_ERROR = { + HTTP_ERROR : -200, + MISSING_UPLOAD_URL : -210, + IO_ERROR : -220, + SECURITY_ERROR : -230, + UPLOAD_LIMIT_EXCEEDED : -240, + UPLOAD_FAILED : -250, + SPECIFIED_FILE_ID_NOT_FOUND : -260, + FILE_VALIDATION_FAILED : -270, + FILE_CANCELLED : -280, + UPLOAD_STOPPED : -290 +}; +SWFUpload.FILE_STATUS = { + QUEUED : -1, + IN_PROGRESS : -2, + ERROR : -3, + COMPLETE : -4, + CANCELLED : -5 +}; +SWFUpload.BUTTON_ACTION = { + SELECT_FILE : -100, + SELECT_FILES : -110, + START_UPLOAD : -120 +}; +SWFUpload.CURSOR = { + ARROW : -1, + HAND : -2 +}; +SWFUpload.WINDOW_MODE = { + WINDOW : "window", + TRANSPARENT : "transparent", + OPAQUE : "opaque" +}; + +/* ******************** */ +/* Instance Members */ +/* ******************** */ + +// Private: initSettings ensures that all the +// settings are set, getting a default value if one was not assigned. +SWFUpload.prototype.initSettings = function () { + this.ensureDefault = function (settingName, defaultValue) { + this.settings[settingName] = (this.settings[settingName] == undefined) ? defaultValue : this.settings[settingName]; + }; + + // Upload backend settings + this.ensureDefault("upload_url", ""); + this.ensureDefault("file_post_name", "Filedata"); + this.ensureDefault("post_params", {}); + this.ensureDefault("use_query_string", false); + this.ensureDefault("requeue_on_error", false); + this.ensureDefault("http_success", []); + + // File Settings + this.ensureDefault("file_types", "*.*"); + this.ensureDefault("file_types_description", "All Files"); + this.ensureDefault("file_size_limit", 0); // Default zero means "unlimited" + this.ensureDefault("file_upload_limit", 0); + this.ensureDefault("file_queue_limit", 0); + + // Flash Settings + this.ensureDefault("flash_url", "swfupload.swf"); + this.ensureDefault("prevent_swf_caching", true); + + // Button Settings + this.ensureDefault("button_image_url", ""); + this.ensureDefault("button_width", 1); + this.ensureDefault("button_height", 1); + this.ensureDefault("button_text", ""); + this.ensureDefault("button_text_style", "color: #000000; font-size: 16pt;"); + this.ensureDefault("button_text_top_padding", 0); + this.ensureDefault("button_text_left_padding", 0); + this.ensureDefault("button_action", SWFUpload.BUTTON_ACTION.SELECT_FILES); + this.ensureDefault("button_disabled", false); + this.ensureDefault("button_placeholder_id", null); + this.ensureDefault("button_cursor", SWFUpload.CURSOR.ARROW); + this.ensureDefault("button_window_mode", SWFUpload.WINDOW_MODE.WINDOW); + + // Debug Settings + this.ensureDefault("debug", false); + this.settings.debug_enabled = this.settings.debug; // Here to maintain v2 API + + // Event Handlers + this.settings.return_upload_start_handler = this.returnUploadStart; + this.ensureDefault("swfupload_loaded_handler", null); + this.ensureDefault("file_dialog_start_handler", null); + this.ensureDefault("file_queued_handler", null); + this.ensureDefault("file_queue_error_handler", null); + this.ensureDefault("file_dialog_complete_handler", null); + + this.ensureDefault("upload_start_handler", null); + this.ensureDefault("upload_progress_handler", null); + this.ensureDefault("upload_error_handler", null); + this.ensureDefault("upload_success_handler", null); + this.ensureDefault("upload_complete_handler", null); + + this.ensureDefault("debug_handler", this.debugMessage); + + this.ensureDefault("custom_settings", {}); + + // Other settings + this.customSettings = this.settings.custom_settings; + + // Update the flash url if needed + if (this.settings.prevent_swf_caching) { + this.settings.flash_url = this.settings.flash_url + "?swfuploadrnd=" + Math.floor(Math.random() * 999999999); + } + + delete this.ensureDefault; +}; + +SWFUpload.prototype.loadFlash = function () { + if (this.settings.button_placeholder_id !== "") { + this.replaceWithFlash(); + } else { + this.appendFlash(); + } +}; + +// Private: appendFlash gets the HTML tag for the Flash +// It then appends the flash to the body +SWFUpload.prototype.appendFlash = function () { + var targetElement, container; + + // Make sure an element with the ID we are going to use doesn't already exist + if (document.getElementById(this.movieName) !== null) { + throw "ID " + this.movieName + " is already in use. The Flash Object could not be added"; + } + + // Get the body tag where we will be adding the flash movie + targetElement = document.getElementsByTagName("body")[0]; + + if (targetElement == undefined) { + throw "Could not find the 'body' element."; + } + + // Append the container and load the flash + container = document.createElement("div"); + container.style.width = "1px"; + container.style.height = "1px"; + container.style.overflow = "hidden"; + + targetElement.appendChild(container); + container.innerHTML = this.getFlashHTML(); // Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers) + + // Fix IE Flash/Form bug + if (window[this.movieName] == undefined) { + window[this.movieName] = this.getMovieElement(); + } + + +}; + +// Private: replaceWithFlash replaces the button_placeholder element with the flash movie. +SWFUpload.prototype.replaceWithFlash = function () { + var targetElement, tempParent; + + // Make sure an element with the ID we are going to use doesn't already exist + if (document.getElementById(this.movieName) !== null) { + throw "ID " + this.movieName + " is already in use. The Flash Object could not be added"; + } + + // Get the element where we will be placing the flash movie + targetElement = document.getElementById(this.settings.button_placeholder_id); + + if (targetElement == undefined) { + throw "Could not find the placeholder element."; + } + + // Append the container and load the flash + tempParent = document.createElement("div"); + tempParent.innerHTML = this.getFlashHTML(); // Using innerHTML is non-standard but the only sensible way to dynamically add Flash in IE (and maybe other browsers) + targetElement.parentNode.replaceChild(tempParent.firstChild, targetElement); + + // Fix IE Flash/Form bug + if (window[this.movieName] == undefined) { + window[this.movieName] = this.getMovieElement(); + } + +}; + +// Private: getFlashHTML generates the object tag needed to embed the flash in to the document +SWFUpload.prototype.getFlashHTML = function () { + // Flash Satay object syntax: http://www.alistapart.com/articles/flashsatay + return ['<object id="', this.movieName, '" type="application/x-shockwave-flash" data="', this.settings.flash_url, '" width="', this.settings.button_width, '" height="', this.settings.button_height, '" class="swfupload">', + '<param name="wmode" value="', this.settings.button_window_mode , '" />', + '<param name="movie" value="', this.settings.flash_url, '" />', + '<param name="quality" value="high" />', + '<param name="menu" value="false" />', + '<param name="allowScriptAccess" value="always" />', + '<param name="flashvars" value="' + this.getFlashVars() + '" />', + '</object>'].join(""); +}; + +// Private: getFlashVars builds the parameter string that will be passed +// to flash in the flashvars param. +SWFUpload.prototype.getFlashVars = function () { + // Build a string from the post param object + var paramString = this.buildParamString(); + var httpSuccessString = this.settings.http_success.join(","); + + // Build the parameter string + return ["movieName=", encodeURIComponent(this.movieName), + "&uploadURL=", encodeURIComponent(this.settings.upload_url), + "&useQueryString=", encodeURIComponent(this.settings.use_query_string), + "&requeueOnError=", encodeURIComponent(this.settings.requeue_on_error), + "&httpSuccess=", encodeURIComponent(httpSuccessString), + "&params=", encodeURIComponent(paramString), + "&filePostName=", encodeURIComponent(this.settings.file_post_name), + "&fileTypes=", encodeURIComponent(this.settings.file_types), + "&fileTypesDescription=", encodeURIComponent(this.settings.file_types_description), + "&fileSizeLimit=", encodeURIComponent(this.settings.file_size_limit), + "&fileUploadLimit=", encodeURIComponent(this.settings.file_upload_limit), + "&fileQueueLimit=", encodeURIComponent(this.settings.file_queue_limit), + "&debugEnabled=", encodeURIComponent(this.settings.debug_enabled), + "&buttonImageURL=", encodeURIComponent(this.settings.button_image_url), + "&buttonWidth=", encodeURIComponent(this.settings.button_width), + "&buttonHeight=", encodeURIComponent(this.settings.button_height), + "&buttonText=", encodeURIComponent(this.settings.button_text), + "&buttonTextTopPadding=", encodeURIComponent(this.settings.button_text_top_padding), + "&buttonTextLeftPadding=", encodeURIComponent(this.settings.button_text_left_padding), + "&buttonTextStyle=", encodeURIComponent(this.settings.button_text_style), + "&buttonAction=", encodeURIComponent(this.settings.button_action), + "&buttonDisabled=", encodeURIComponent(this.settings.button_disabled), + "&buttonCursor=", encodeURIComponent(this.settings.button_cursor) + ].join(""); +}; + +// Public: getMovieElement retrieves the DOM reference to the Flash element added by SWFUpload +// The element is cached after the first lookup +SWFUpload.prototype.getMovieElement = function () { + if (this.movieElement == undefined) { + this.movieElement = document.getElementById(this.movieName); + } + + if (this.movieElement === null) { + throw "Could not find Flash element"; + } + + return this.movieElement; +}; + +// Private: buildParamString takes the name/value pairs in the post_params setting object +// and joins them up in to a string formatted "name=value&name=value" +SWFUpload.prototype.buildParamString = function () { + var postParams = this.settings.post_params; + var paramStringPairs = []; + + if (typeof(postParams) === "object") { + for (var name in postParams) { + if (postParams.hasOwnProperty(name)) { + paramStringPairs.push(encodeURIComponent(name.toString()) + "=" + encodeURIComponent(postParams[name].toString())); + } + } + } + + return paramStringPairs.join("&"); +}; + +// Public: Used to remove a SWFUpload instance from the page. This method strives to remove +// all references to the SWF, and other objects so memory is properly freed. +// Returns true if everything was destroyed. Returns a false if a failure occurs leaving SWFUpload in an inconsistant state. +// Credits: Major improvements provided by steffen +SWFUpload.prototype.destroy = function () { + try { + // Make sure Flash is done before we try to remove it + this.cancelUpload(null, false); + + // Remove the SWFUpload DOM nodes + var movieElement = null; + movieElement = this.getMovieElement(); + + if (movieElement) { + // Loop through all the movie's properties and remove all function references (DOM/JS IE 6/7 memory leak workaround) + for (var i in movieElement) { + try { + if (typeof(movieElement[i]) === "function") { + movieElement[i] = null; + } + } catch (ex1) {} + } + + // Remove the Movie Element from the page + try { + movieElement.parentNode.removeChild(movieElement); + } catch (ex) {} + } + + + // Remove IE form fix reference + window[this.movieName] = null; + + // Destroy other references + SWFUpload.instances[this.movieName] = null; + delete SWFUpload.instances[this.movieName]; + + this.movieElement = null; + this.settings = null; + this.customSettings = null; + this.eventQueue = null; + this.movieName = null; + + + return true; + } catch (ex1) { + return false; + } +}; + +// Public: displayDebugInfo prints out settings and configuration +// information about this SWFUpload instance. +// This function (and any references to it) can be deleted when placing +// SWFUpload in production. +SWFUpload.prototype.displayDebugInfo = function () { + this.debug( + [ + "---SWFUpload Instance Info---\n", + "Version: ", SWFUpload.version, "\n", + "Movie Name: ", this.movieName, "\n", + "Settings:\n", + "\t", "upload_url: ", this.settings.upload_url, "\n", + "\t", "flash_url: ", this.settings.flash_url, "\n", + "\t", "use_query_string: ", this.settings.use_query_string.toString(), "\n", + "\t", "requeue_on_error: ", this.settings.requeue_on_error.toString(), "\n", + "\t", "http_success: ", this.settings.http_success.join(", "), "\n", + "\t", "file_post_name: ", this.settings.file_post_name, "\n", + "\t", "post_params: ", this.settings.post_params.toString(), "\n", + "\t", "file_types: ", this.settings.file_types, "\n", + "\t", "file_types_description: ", this.settings.file_types_description, "\n", + "\t", "file_size_limit: ", this.settings.file_size_limit, "\n", + "\t", "file_upload_limit: ", this.settings.file_upload_limit, "\n", + "\t", "file_queue_limit: ", this.settings.file_queue_limit, "\n", + "\t", "debug: ", this.settings.debug.toString(), "\n", + + "\t", "prevent_swf_caching: ", this.settings.prevent_swf_caching.toString(), "\n", + + "\t", "button_placeholder_id: ", this.settings.button_placeholder_id.toString(), "\n", + "\t", "button_image_url: ", this.settings.button_image_url.toString(), "\n", + "\t", "button_width: ", this.settings.button_width.toString(), "\n", + "\t", "button_height: ", this.settings.button_height.toString(), "\n", + "\t", "button_text: ", this.settings.button_text.toString(), "\n", + "\t", "button_text_style: ", this.settings.button_text_style.toString(), "\n", + "\t", "button_text_top_padding: ", this.settings.button_text_top_padding.toString(), "\n", + "\t", "button_text_left_padding: ", this.settings.button_text_left_padding.toString(), "\n", + "\t", "button_action: ", this.settings.button_action.toString(), "\n", + "\t", "button_disabled: ", this.settings.button_disabled.toString(), "\n", + + "\t", "custom_settings: ", this.settings.custom_settings.toString(), "\n", + "Event Handlers:\n", + "\t", "swfupload_loaded_handler assigned: ", (typeof this.settings.swfupload_loaded_handler === "function").toString(), "\n", + "\t", "file_dialog_start_handler assigned: ", (typeof this.settings.file_dialog_start_handler === "function").toString(), "\n", + "\t", "file_queued_handler assigned: ", (typeof this.settings.file_queued_handler === "function").toString(), "\n", + "\t", "file_queue_error_handler assigned: ", (typeof this.settings.file_queue_error_handler === "function").toString(), "\n", + "\t", "upload_start_handler assigned: ", (typeof this.settings.upload_start_handler === "function").toString(), "\n", + "\t", "upload_progress_handler assigned: ", (typeof this.settings.upload_progress_handler === "function").toString(), "\n", + "\t", "upload_error_handler assigned: ", (typeof this.settings.upload_error_handler === "function").toString(), "\n", + "\t", "upload_success_handler assigned: ", (typeof this.settings.upload_success_handler === "function").toString(), "\n", + "\t", "upload_complete_handler assigned: ", (typeof this.settings.upload_complete_handler === "function").toString(), "\n", + "\t", "debug_handler assigned: ", (typeof this.settings.debug_handler === "function").toString(), "\n" + ].join("") + ); +}; + +/* Note: addSetting and getSetting are no longer used by SWFUpload but are included + the maintain v2 API compatibility +*/ +// Public: (Deprecated) addSetting adds a setting value. If the value given is undefined or null then the default_value is used. +SWFUpload.prototype.addSetting = function (name, value, default_value) { + if (value == undefined) { + return (this.settings[name] = default_value); + } else { + return (this.settings[name] = value); + } +}; + +// Public: (Deprecated) getSetting gets a setting. Returns an empty string if the setting was not found. +SWFUpload.prototype.getSetting = function (name) { + if (this.settings[name] != undefined) { + return this.settings[name]; + } + + return ""; +}; + + + +// Private: callFlash handles function calls made to the Flash element. +// Calls are made with a setTimeout for some functions to work around +// bugs in the ExternalInterface library. +SWFUpload.prototype.callFlash = function (functionName, argumentArray) { + argumentArray = argumentArray || []; + + var movieElement = this.getMovieElement(); + var returnValue, returnString; + + // Flash's method if calling ExternalInterface methods (code adapted from MooTools). + try { + returnString = movieElement.CallFunction('<invoke name="' + functionName + '" returntype="javascript">' + __flash__argumentsToXML(argumentArray, 0) + '</invoke>'); + returnValue = eval(returnString); + } catch (ex) { + throw "Call to " + functionName + " failed"; + } + + // Unescape file post param values + if (returnValue != undefined && typeof returnValue.post === "object") { + returnValue = this.unescapeFilePostParams(returnValue); + } + + return returnValue; +}; + + +/* ***************************** + -- Flash control methods -- + Your UI should use these + to operate SWFUpload + ***************************** */ + +// WARNING: this function does not work in Flash Player 10 +// Public: selectFile causes a File Selection Dialog window to appear. This +// dialog only allows 1 file to be selected. +SWFUpload.prototype.selectFile = function () { + this.callFlash("SelectFile"); +}; + +// WARNING: this function does not work in Flash Player 10 +// Public: selectFiles causes a File Selection Dialog window to appear/ This +// dialog allows the user to select any number of files +// Flash Bug Warning: Flash limits the number of selectable files based on the combined length of the file names. +// If the selection name length is too long the dialog will fail in an unpredictable manner. There is no work-around +// for this bug. +SWFUpload.prototype.selectFiles = function () { + this.callFlash("SelectFiles"); +}; + + +// Public: startUpload starts uploading the first file in the queue unless +// the optional parameter 'fileID' specifies the ID +SWFUpload.prototype.startUpload = function (fileID) { + this.callFlash("StartUpload", [fileID]); +}; + +// Public: cancelUpload cancels any queued file. The fileID parameter may be the file ID or index. +// If you do not specify a fileID the current uploading file or first file in the queue is cancelled. +// If you do not want the uploadError event to trigger you can specify false for the triggerErrorEvent parameter. +SWFUpload.prototype.cancelUpload = function (fileID, triggerErrorEvent) { + if (triggerErrorEvent !== false) { + triggerErrorEvent = true; + } + this.callFlash("CancelUpload", [fileID, triggerErrorEvent]); +}; + +// Public: stopUpload stops the current upload and requeues the file at the beginning of the queue. +// If nothing is currently uploading then nothing happens. +SWFUpload.prototype.stopUpload = function () { + this.callFlash("StopUpload"); +}; + +/* ************************ + * Settings methods + * These methods change the SWFUpload settings. + * SWFUpload settings should not be changed directly on the settings object + * since many of the settings need to be passed to Flash in order to take + * effect. + * *********************** */ + +// Public: getStats gets the file statistics object. +SWFUpload.prototype.getStats = function () { + return this.callFlash("GetStats"); +}; + +// Public: setStats changes the SWFUpload statistics. You shouldn't need to +// change the statistics but you can. Changing the statistics does not +// affect SWFUpload accept for the successful_uploads count which is used +// by the upload_limit setting to determine how many files the user may upload. +SWFUpload.prototype.setStats = function (statsObject) { + this.callFlash("SetStats", [statsObject]); +}; + +// Public: getFile retrieves a File object by ID or Index. If the file is +// not found then 'null' is returned. +SWFUpload.prototype.getFile = function (fileID) { + if (typeof(fileID) === "number") { + return this.callFlash("GetFileByIndex", [fileID]); + } else { + return this.callFlash("GetFile", [fileID]); + } +}; + +// Public: addFileParam sets a name/value pair that will be posted with the +// file specified by the Files ID. If the name already exists then the +// exiting value will be overwritten. +SWFUpload.prototype.addFileParam = function (fileID, name, value) { + return this.callFlash("AddFileParam", [fileID, name, value]); +}; + +// Public: removeFileParam removes a previously set (by addFileParam) name/value +// pair from the specified file. +SWFUpload.prototype.removeFileParam = function (fileID, name) { + this.callFlash("RemoveFileParam", [fileID, name]); +}; + +// Public: setUploadUrl changes the upload_url setting. +SWFUpload.prototype.setUploadURL = function (url) { + this.settings.upload_url = url.toString(); + this.callFlash("SetUploadURL", [url]); +}; + +// Public: setPostParams changes the post_params setting +SWFUpload.prototype.setPostParams = function (paramsObject) { + this.settings.post_params = paramsObject; + this.callFlash("SetPostParams", [paramsObject]); +}; + +// Public: addPostParam adds post name/value pair. Each name can have only one value. +SWFUpload.prototype.addPostParam = function (name, value) { + this.settings.post_params[name] = value; + this.callFlash("SetPostParams", [this.settings.post_params]); +}; + +// Public: removePostParam deletes post name/value pair. +SWFUpload.prototype.removePostParam = function (name) { + delete this.settings.post_params[name]; + this.callFlash("SetPostParams", [this.settings.post_params]); +}; + +// Public: setFileTypes changes the file_types setting and the file_types_description setting +SWFUpload.prototype.setFileTypes = function (types, description) { + this.settings.file_types = types; + this.settings.file_types_description = description; + this.callFlash("SetFileTypes", [types, description]); +}; + +// Public: setFileSizeLimit changes the file_size_limit setting +SWFUpload.prototype.setFileSizeLimit = function (fileSizeLimit) { + this.settings.file_size_limit = fileSizeLimit; + this.callFlash("SetFileSizeLimit", [fileSizeLimit]); +}; + +// Public: setFileUploadLimit changes the file_upload_limit setting +SWFUpload.prototype.setFileUploadLimit = function (fileUploadLimit) { + this.settings.file_upload_limit = fileUploadLimit; + this.callFlash("SetFileUploadLimit", [fileUploadLimit]); +}; + +// Public: setFileQueueLimit changes the file_queue_limit setting +SWFUpload.prototype.setFileQueueLimit = function (fileQueueLimit) { + this.settings.file_queue_limit = fileQueueLimit; + this.callFlash("SetFileQueueLimit", [fileQueueLimit]); +}; + +// Public: setFilePostName changes the file_post_name setting +SWFUpload.prototype.setFilePostName = function (filePostName) { + this.settings.file_post_name = filePostName; + this.callFlash("SetFilePostName", [filePostName]); +}; + +// Public: setUseQueryString changes the use_query_string setting +SWFUpload.prototype.setUseQueryString = function (useQueryString) { + this.settings.use_query_string = useQueryString; + this.callFlash("SetUseQueryString", [useQueryString]); +}; + +// Public: setRequeueOnError changes the requeue_on_error setting +SWFUpload.prototype.setRequeueOnError = function (requeueOnError) { + this.settings.requeue_on_error = requeueOnError; + this.callFlash("SetRequeueOnError", [requeueOnError]); +}; + +// Public: setHTTPSuccess changes the http_success setting +SWFUpload.prototype.setHTTPSuccess = function (http_status_codes) { + if (typeof http_status_codes === "string") { + http_status_codes = http_status_codes.replace(" ", "").split(","); + } + + this.settings.http_success = http_status_codes; + this.callFlash("SetHTTPSuccess", [http_status_codes]); +}; + + +// Public: setDebugEnabled changes the debug_enabled setting +SWFUpload.prototype.setDebugEnabled = function (debugEnabled) { + this.settings.debug_enabled = debugEnabled; + this.callFlash("SetDebugEnabled", [debugEnabled]); +}; + +// Public: setButtonImageURL loads a button image sprite +SWFUpload.prototype.setButtonImageURL = function (buttonImageURL) { + if (buttonImageURL == undefined) { + buttonImageURL = ""; + } + + this.settings.button_image_url = buttonImageURL; + this.callFlash("SetButtonImageURL", [buttonImageURL]); +}; + +// Public: setButtonDimensions resizes the Flash Movie and button +SWFUpload.prototype.setButtonDimensions = function (width, height) { + this.settings.button_width = width; + this.settings.button_height = height; + + var movie = this.getMovieElement(); + if (movie != undefined) { + movie.style.width = width + "px"; + movie.style.height = height + "px"; + } + + this.callFlash("SetButtonDimensions", [width, height]); +}; +// Public: setButtonText Changes the text overlaid on the button +SWFUpload.prototype.setButtonText = function (html) { + this.settings.button_text = html; + this.callFlash("SetButtonText", [html]); +}; +// Public: setButtonTextPadding changes the top and left padding of the text overlay +SWFUpload.prototype.setButtonTextPadding = function (left, top) { + this.settings.button_text_top_padding = top; + this.settings.button_text_left_padding = left; + this.callFlash("SetButtonTextPadding", [left, top]); +}; + +// Public: setButtonTextStyle changes the CSS used to style the HTML/Text overlaid on the button +SWFUpload.prototype.setButtonTextStyle = function (css) { + this.settings.button_text_style = css; + this.callFlash("SetButtonTextStyle", [css]); +}; +// Public: setButtonDisabled disables/enables the button +SWFUpload.prototype.setButtonDisabled = function (isDisabled) { + this.settings.button_disabled = isDisabled; + this.callFlash("SetButtonDisabled", [isDisabled]); +}; +// Public: setButtonAction sets the action that occurs when the button is clicked +SWFUpload.prototype.setButtonAction = function (buttonAction) { + this.settings.button_action = buttonAction; + this.callFlash("SetButtonAction", [buttonAction]); +}; + +// Public: setButtonCursor changes the mouse cursor displayed when hovering over the button +SWFUpload.prototype.setButtonCursor = function (cursor) { + this.settings.button_cursor = cursor; + this.callFlash("SetButtonCursor", [cursor]); +}; + +/* ******************************* + Flash Event Interfaces + These functions are used by Flash to trigger the various + events. + + All these functions a Private. + + Because the ExternalInterface library is buggy the event calls + are added to a queue and the queue then executed by a setTimeout. + This ensures that events are executed in a determinate order and that + the ExternalInterface bugs are avoided. +******************************* */ + +SWFUpload.prototype.queueEvent = function (handlerName, argumentArray) { + // Warning: Don't call this.debug inside here or you'll create an infinite loop + + if (argumentArray == undefined) { + argumentArray = []; + } else if (!(argumentArray instanceof Array)) { + argumentArray = [argumentArray]; + } + + var self = this; + if (typeof this.settings[handlerName] === "function") { + // Queue the event + this.eventQueue.push(function () { + this.settings[handlerName].apply(this, argumentArray); + }); + + // Execute the next queued event + setTimeout(function () { + self.executeNextEvent(); + }, 0); + + } else if (this.settings[handlerName] !== null) { + throw "Event handler " + handlerName + " is unknown or is not a function"; + } +}; + +// Private: Causes the next event in the queue to be executed. Since events are queued using a setTimeout +// we must queue them in order to garentee that they are executed in order. +SWFUpload.prototype.executeNextEvent = function () { + // Warning: Don't call this.debug inside here or you'll create an infinite loop + + var f = this.eventQueue ? this.eventQueue.shift() : null; + if (typeof(f) === "function") { + f.apply(this); + } +}; + +// Private: unescapeFileParams is part of a workaround for a flash bug where objects passed through ExternalInterface cannot have +// properties that contain characters that are not valid for JavaScript identifiers. To work around this +// the Flash Component escapes the parameter names and we must unescape again before passing them along. +SWFUpload.prototype.unescapeFilePostParams = function (file) { + var reg = /[$]([0-9a-f]{4})/i; + var unescapedPost = {}; + var uk; + + if (file != undefined) { + for (var k in file.post) { + if (file.post.hasOwnProperty(k)) { + uk = k; + var match; + while ((match = reg.exec(uk)) !== null) { + uk = uk.replace(match[0], String.fromCharCode(parseInt("0x" + match[1], 16))); + } + unescapedPost[uk] = file.post[k]; + } + } + + file.post = unescapedPost; + } + + return file; +}; + +SWFUpload.prototype.flashReady = function () { + // Check that the movie element is loaded correctly with its ExternalInterface methods defined + var movieElement = this.getMovieElement(); + + // Pro-actively unhook all the Flash functions + if (typeof(movieElement.CallFunction) === "unknown") { // We only want to do this in IE + this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)"); + for (var key in movieElement) { + try { + if (typeof(movieElement[key]) === "function") { + movieElement[key] = null; + } + } catch (ex) { + } + } + } + + this.queueEvent("swfupload_loaded_handler"); +}; + + +/* This is a chance to do something before the browse window opens */ +SWFUpload.prototype.fileDialogStart = function () { + this.queueEvent("file_dialog_start_handler"); +}; + + +/* Called when a file is successfully added to the queue. */ +SWFUpload.prototype.fileQueued = function (file) { + file = this.unescapeFilePostParams(file); + this.queueEvent("file_queued_handler", file); +}; + + +/* Handle errors that occur when an attempt to queue a file fails. */ +SWFUpload.prototype.fileQueueError = function (file, errorCode, message) { + file = this.unescapeFilePostParams(file); + this.queueEvent("file_queue_error_handler", [file, errorCode, message]); +}; + +/* Called after the file dialog has closed and the selected files have been queued. + You could call startUpload here if you want the queued files to begin uploading immediately. */ +SWFUpload.prototype.fileDialogComplete = function (numFilesSelected, numFilesQueued) { + this.queueEvent("file_dialog_complete_handler", [numFilesSelected, numFilesQueued]); +}; + +SWFUpload.prototype.uploadStart = function (file) { + file = this.unescapeFilePostParams(file); + this.queueEvent("return_upload_start_handler", file); +}; + +SWFUpload.prototype.returnUploadStart = function (file) { + var returnValue; + if (typeof this.settings.upload_start_handler === "function") { + file = this.unescapeFilePostParams(file); + returnValue = this.settings.upload_start_handler.call(this, file); + } else if (this.settings.upload_start_handler != undefined) { + throw "upload_start_handler must be a function"; + } + + // Convert undefined to true so if nothing is returned from the upload_start_handler it is + // interpretted as 'true'. + if (returnValue === undefined) { + returnValue = true; + } + + returnValue = !!returnValue; + + this.callFlash("ReturnUploadStart", [returnValue]); +}; + + + +SWFUpload.prototype.uploadProgress = function (file, bytesComplete, bytesTotal) { + file = this.unescapeFilePostParams(file); + this.queueEvent("upload_progress_handler", [file, bytesComplete, bytesTotal]); +}; + +SWFUpload.prototype.uploadError = function (file, errorCode, message) { + file = this.unescapeFilePostParams(file); + this.queueEvent("upload_error_handler", [file, errorCode, message]); +}; + +SWFUpload.prototype.uploadSuccess = function (file, serverData) { + file = this.unescapeFilePostParams(file); + this.queueEvent("upload_success_handler", [file, serverData]); +}; + +SWFUpload.prototype.uploadComplete = function (file) { + file = this.unescapeFilePostParams(file); + this.queueEvent("upload_complete_handler", file); +}; + +/* Called by SWFUpload JavaScript and Flash functions when debug is enabled. By default it writes messages to the + internal debug console. You can override this event and have messages written where you want. */ +SWFUpload.prototype.debug = function (message) { + this.queueEvent("debug_handler", message); +}; + + +/* ********************************** + Debug Console + The debug console is a self contained, in page location + for debug message to be sent. The Debug Console adds + itself to the body if necessary. + + The console is automatically scrolled as messages appear. + + If you are using your own debug handler or when you deploy to production and + have debug disabled you can remove these functions to reduce the file size + and complexity. +********************************** */ + +// Private: debugMessage is the default debug_handler. If you want to print debug messages +// call the debug() function. When overriding the function your own function should +// check to see if the debug setting is true before outputting debug information. +SWFUpload.prototype.debugMessage = function (message) { + if (this.settings.debug) { + var exceptionMessage, exceptionValues = []; + + // Check for an exception object and print it nicely + if (typeof message === "object" && typeof message.name === "string" && typeof message.message === "string") { + for (var key in message) { + if (message.hasOwnProperty(key)) { + exceptionValues.push(key + ": " + message[key]); + } + } + exceptionMessage = exceptionValues.join("\n") || ""; + exceptionValues = exceptionMessage.split("\n"); + exceptionMessage = "EXCEPTION: " + exceptionValues.join("\nEXCEPTION: "); + SWFUpload.Console.writeLine(exceptionMessage); + } else { + SWFUpload.Console.writeLine(message); + } + } +}; + +SWFUpload.Console = {}; +SWFUpload.Console.writeLine = function (message) { + var console, documentForm; + + try { + console = document.getElementById("SWFUpload_Console"); + + if (!console) { + documentForm = document.createElement("form"); + document.getElementsByTagName("body")[0].appendChild(documentForm); + + console = document.createElement("textarea"); + console.id = "SWFUpload_Console"; + console.style.fontFamily = "monospace"; + console.setAttribute("wrap", "off"); + console.wrap = "off"; + console.style.overflow = "auto"; + console.style.width = "700px"; + console.style.height = "350px"; + console.style.margin = "5px"; + documentForm.appendChild(console); + } + + console.value += message + "\n"; + + console.scrollTop = console.scrollHeight - console.clientHeight; + } catch (ex) { + alert("Exception: " + ex.name + " Message: " + ex.message); + } +}; Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/swfupload.queue.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/swfupload.queue.js,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/swfupload.queue.js 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,93 @@ +/* + Queue Plug-in + + Features: + *Adds a cancelQueue() method for cancelling the entire queue. + *All queued files are uploaded when startUpload() is called. + *If false is returned from uploadComplete then the queue upload is stopped. + If false is not returned (strict comparison) then the queue upload is continued. + *Adds a QueueComplete event that is fired when all the queued files have finished uploading. + Set the event handler with the queue_complete_handler setting. + + */ + +var SWFUpload; +if (typeof(SWFUpload) === "function") { + SWFUpload.queue = {}; + + SWFUpload.prototype.initSettings = (function (oldInitSettings) { + return function () { + if (typeof(oldInitSettings) === "function") { + oldInitSettings.call(this); + } + + this.customSettings.queue_cancelled_flag = false; + this.customSettings.queue_upload_count = 0; + + this.settings.user_upload_complete_handler = this.settings.upload_complete_handler; + this.settings.user_upload_start_handler = this.settings.upload_start_handler; + this.settings.upload_complete_handler = SWFUpload.queue.uploadCompleteHandler; + this.settings.upload_start_handler = SWFUpload.queue.uploadStartHandler; + + this.settings.queue_complete_handler = this.settings.queue_complete_handler || null; + }; + })(SWFUpload.prototype.initSettings); + + SWFUpload.prototype.startUpload = function (fileID) { + this.customSettings.queue_cancelled_flag = false; + this.callFlash("StartUpload", [fileID]); + }; + + SWFUpload.prototype.cancelQueue = function () { + this.customSettings.queue_cancelled_flag = true; + this.stopUpload(); + + var stats = this.getStats(); + while (stats.files_queued > 0) { + this.cancelUpload(); + stats = this.getStats(); + } + }; + + SWFUpload.queue.uploadStartHandler = function (file) { + var returnValue; + if (typeof(this.customSettings.user_upload_start_handler) === "function") { + returnValue = this.customSettings.user_upload_start_handler.call(this, file); + } + + // To prevent upload a real "FALSE" value must be returned, otherwise default to a real "TRUE" value. + returnValue = (returnValue === false) ? false : true; + + this.customSettings.queue_cancelled_flag = !returnValue; + + return returnValue; + }; + + SWFUpload.queue.uploadCompleteHandler = function (file) { + var user_upload_complete_handler = this.settings.user_upload_complete_handler; + var continueUpload; + + if (file.filestatus === SWFUpload.FILE_STATUS.COMPLETE) { + this.customSettings.queue_upload_count++; + } + + if (typeof(user_upload_complete_handler) === "function") { + continueUpload = (user_upload_complete_handler.call(this, file) === false) ? false : true; + } else { + continueUpload = true; + } + + if (continueUpload) { + var stats = this.getStats(); + if (stats.files_queued > 0 && this.customSettings.queue_cancelled_flag === false) { + this.startUpload(); + } else if (this.customSettings.queue_cancelled_flag === false) { + this.queueEvent("queue_complete_handler", [this.customSettings.queue_upload_count]); + this.customSettings.queue_upload_count = 0; + } else { + this.customSettings.queue_cancelled_flag = false; + this.customSettings.queue_upload_count = 0; + } + } + }; +} \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/swfupload.swf =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/resources/swfupload/swfupload.swf,v diff -u Binary files differ Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/download.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/download.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/download.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,10 @@ +ad_page_contract { + + + Download an image file + +} { + item_id:integer,notnull +} + +cr_write_content -item_id $item_id \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/formok.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/formok.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/formok.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1 @@ +ns_return 200 "text/html" "{\"success\": true, \"info\":\"\"}" \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-onephoto.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-onephoto.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-onephoto.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,39 @@ +ad_page_contract { + + Retrieve info about one photo + + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2007-11-25 + +} { + photo_id:integer,notnull + package_id:integer,notnull + {mode "display"} +} + +set user_id [ad_conn user_id] +set package_url [apm_package_url_from_id $package_id] +set success "false" +set photoinfo "{}" + +set query_name dbqd.photo-album.www.photo-edit.get_photo_info + +if { [db_0or1row $query_name { }] } { + set success "true" + set caption [ajaxpa::json_normalize -value $caption] + if { $mode == "edit"} { + set revision_id [db_nextval acs_object_id_seq] + } else { + set revision_id "" + } + set title [ajaxpa::json_normalize -value $title] + set description [ajaxpa::json_normalize -value $description] + set story [ajaxpa::json_normalize -value $story] + + set photoinfo "{\"photo_id\":${photo_id},\"title\":\"${title}\",\"caption\":\"${caption}\",\"description\":\"${description}\",\"story\":\"${story}\",\"revision_id\":\"${revision_id}\",\"prevrevision_id\":\"${previous_revision}\"}" +} + +ns_set put [ns_conn outputheaders] "Content-Type" "text/html" + +ns_return 200 "text/html" "{\"success\":${success}, \"info\":$photoinfo}" \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-photos.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-photos.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-photos.adp 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1 @@ +{"totalPhotos":@total_photos@,"photos":[<multiple name="photos" delimiter=",">{"view_image_id":"@photos.view_image_id@","shortcaption":"@photos.shortcaption;noquote@","caption":"@photos.caption;noquote@","photo_id":@photos.photo_id@,"thumb_photo_id":@photos.thumb_photo_id@,"fullimage_path":"@photos.fullimage_path;noquote@","path":"@photos.path;noquote@","story":"@photos.story;noquote@","shadowbox":{player:"img",title:"@photos.caption;noquote@",content:"@photos.fullimage_path;noquote@",gallery:"pa"}}</multiple>]} \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-photos.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-photos.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/get-photos.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,82 @@ +ad_page_contract { + + Returns a JSON structure suitable for building the + thumbnails in the carousel. + + Requires the album_id from where we will get the photos + + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2007-11-25 + +} { + album_id:integer,notnull + package_id:integer,notnull + {start ""} + {limit ""} +} + +set user_id [ad_conn user_id] +set package_url [apm_package_url_from_id $package_id] + +# paging +set all_photos_in_album [pa_all_photos_in_album $album_id] +set total_photos [llength $all_photos_in_album] +set images_per_page $limit +set start_index $start +set end_index [expr $start + ($images_per_page - 1)] +set photos_on_page [lrange $all_photos_in_album $start_index $end_index] + +if { [llength $photos_on_page] == 0 } { set photos_on_page 0} + +db_multirow -extend { title caption shortcaption story path fullimage_path thumb_photo_id view_image_id} photos photos_query " + select ci.item_id as photo_id, + i.image_id as thumb_path, + i.height as thumb_height, + i.width as thumb_width + from cr_items ci, + cr_items ci2, + cr_child_rels ccr2, + images i + where ccr2.relation_tag = 'thumb' + and ci.item_id = ccr2.parent_id + and ccr2.child_id = ci2.item_id + and ci2.live_revision = i.image_id + and ci.live_revision is not null + and ci.item_id in ([join $photos_on_page ","]) order by ci.item_id desc +" { + + set path "${package_url}images/${thumb_path}" + set thumb_photo_id $thumb_path + + db_0or1row "get_vw" "select + pp.caption, + pp.story, + cr.title, + i.image_id as view_image_id + from cr_items ci, + cr_revisions cr, + pa_photos pp, + cr_items ci2, + cr_child_rels ccr2, + images i + where cr.revision_id = pp.pa_photo_id + and ci.live_revision = cr.revision_id + and ci.item_id = ccr2.parent_id + and ccr2.child_id = ci2.item_id + and ccr2.relation_tag = 'viewer' + and ci2.live_revision = i.image_id + and ci.item_id = :photo_id" + + if { ![exists_and_not_null caption] } { set caption " " } else { set caption [ajaxpa::json_normalize -value $caption] } + set story [ajaxpa::json_normalize -value $story] + set fullimage_path "${package_url}images/${view_image_id}/${title}" + if { [string length $caption] > 10} { + set shortcaption [string range $caption 0 11] + append shortcaption ".." + } else { + set shortcaption $caption + } +} + +ad_return_template \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-onenode.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-onenode.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-onenode.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,78 @@ +ad_page_contract { + + Return the JSON for the album or folder given its id + The JSON is suitable for creating a new tree node + + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2008-9-21 + +} { + node_id:integer,notnull + {type "folder"} + {mode "display"} +} + +set user_id [ad_conn user_id] + +switch $type { + "folder" { + + set query "select label as name, + description + from cr_folders + where folder_id = :node_id" + + } + "album" { + + set query "select i.item_id, + r.title as name, + r.description, + a.story, + a.photographer, + i.live_revision as previous_revision + from cr_items i, + cr_revisions r, + pa_albums a + where i.content_type = 'pa_album' + and i.live_revision = r.revision_id + and i.live_revision = a.pa_album_id + and i.item_id = :node_id" + + } + default { } +} + +if { [exists_and_not_null query] && [db_0or1row "get_folder_info" $query] } { + + set name [ajaxpa::json_normalize -value $name] + set description [ajaxpa::json_normalize -value $description] + if { ![exists_and_not_null story] } { set story "" } else { set story [ajaxpa::json_normalize -value $story]} + if { ![exists_and_not_null photographer] } { set photographer "" } else { set photographer [ajaxpa::json_normalize -value $photographer] } + + if { $mode == "edit" && $type == "album"} { + set revision_id [db_nextval acs_object_id_seq] + } else { + set revision_id "" + } + + # can the user see this folder or album + set read_p [permission::permission_p -party_id $user_id -object_id $node_id -privilege "read"] + + # can the user write to this folder or album + # write privileges allow users to create stuff + set write_p [permission::permission_p -party_id $user_id -object_id $node_id -privilege "write"] + + if { ![exists_and_not_null previous_revision] } { set previous_revision "" } + + set nodeinfo "{ \"text\": \"$name\",\"qtip\":\"$description\",\"id\":\"$node_id\",\"iconCls\":\"$type\",\"singleClickExpand\":true,\"leaf\":false,\"attributes\":{\"type\":\"$type\",\"story\":\"$story\",\"photographer\":\"$photographer\",\"revision_id\":\"$revision_id\",\"previous_revision\":\"$previous_revision\",\"read_p\":$read_p,\"write_p\":$write_p}}" + +} else { + + set nodeinfo "\"null\"" + +} + + +ns_return 200 "text/html" "{\"success\":true, \"info\":$nodeinfo}" \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-treenodes.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-treenodes.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-treenodes.adp 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1 @@ +[<multiple name="treenodes" delimiter=","><if @treenodes.read_p@>{"text":"@treenodes.name;noquote@","qtip":"@treenodes.description;noquote@","id":"@treenodes.id;noquote@",iconCls:"@treenodes.cls;noquote@","singleClickExpand":true,leaf:@treenodes.leaf;noquote@,attributes:{"type":"@treenodes.cls@","story":"@treenodes.story;noquote@","photographer":"@treenodes.photographer;noquote@","write_p":@treenodes.write_p@,"read_p":@treenodes.read_p@}}</if></multiple>] \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-treenodes.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-treenodes.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/load-treenodes.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,53 @@ +ad_page_contract { + + Returns a JSON structure suitable for building the nodes of a tree + for the ajax photo album ui. + + Requires the package_id + + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2007-11-18 + +} { + package_id:integer,notnull + {node ""} +} + +set user_id [ad_conn user_id] + +set query_name dbqd.photo-album.www.index.get_children +set folder_id $node + +db_multirow -extend { text id cls leaf story photographer write_p read_p} treenodes $query_name "" { + + set cls "folder" + set leaf "false" + + if { $type == "Album" } { + set cls "album" + # set leaf "true" + } + + # can the user see this folder or album + set read_p [permission::permission_p -party_id $user_id -object_id $item_id -privilege "read"] + + # can the user write to this folder or album + # write privileges allow users to create stuff + set write_p [permission::permission_p -party_id $user_id -object_id $item_id -privilege "write"] + + set text $name + set id $item_id + + if { ![exists_and_not_null description] } { + set description "" + } + + set name [ajaxpa::json_normalize -value $name] + set description [ajaxpa::json_normalize -value $description] + if { ![exists_and_not_null story] } { set story "" } else { set story [ajaxpa::json_normalize -value $story]} + if { ![exists_and_not_null photographer] } { set photographer "" } else { set photographer [ajaxpa::json_normalize -value $photographer] } + +} + +ad_return_template \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/move-node.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/move-node.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/move-node.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,65 @@ +ad_page_contract { + + Moves an album or folder into a folder + + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2009-03-15 + +} { + target_folder_id:integer,notnull + item_id:integer,notnull + {type "folder"} +} + +set success "true" +set msg "" + +db_transaction { + + + if { $type == "folder" } { + + # move folder + + db_exec_plsql folder_move " + select content_folder__move ( + :item_id, -- folder_id + :target_folder_id -- target_folder_id + ) + " + + db_dml context_update " + update acs_objects + set context_id = :target_folder_id + where object_id = :item_id + " + + } else { + + # move album + + db_exec_plsql album_move " + select content_item__move ( + :item_id, -- item_id + :target_folder_id -- target_folder_id + ) + " + + db_dml context_update " + update acs_objects + set context_id = :target_folder_id + where object_id = :item_id + " + + } + +} on_error { + + set success "false" + set msg "Sorry, an error occured." + +} + + +ns_return 200 "text/html" "{\"success\":$success,\"msg\":\"$msg\"}" Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/move-photos.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/move-photos.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/move-photos.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,35 @@ +ad_page_contract { + + Move one or more photos to an album + + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2009-03-15 + +} { + target_album_id:integer,notnull + image_ids:multiple +} + +set success "true" +set msg "" + +db_transaction { + + foreach image_id $image_ids { + set old_parent_id [db_string "get_old_parent" "select parent_id from cr_items where item_id = :image_id"] + pa_flush_photo_in_album_cache $old_parent_id + db_dml "update_critem" "update cr_items set parent_id = :target_album_id where item_id=:image_id" + db_dml "update_child_rels" "update cr_child_rels set parent_id = :target_album_id where child_id = :image_id" + } + +} on_error { + + set success "false" + set msg "Sorry, an error occurred" + +} + +pa_flush_photo_in_album_cache $target_album_id + +ns_return 200 "text/html" "{\"success\":$success,\"msg\":\"$msg\"}" \ No newline at end of file Index: openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/nextobjid.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/nextobjid.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/ajax-photoalbum-ui/www/xmlhttp/nextobjid.tcl 11 Apr 2009 15:56:14 -0000 1.1 @@ -0,0 +1,12 @@ +ad_page_contract { + + Returns the next object_id in the object_id sequence + + @author Hamilton Chua (ham@solutiongrove.com) + @creation-date 2008-09-20 + +} + +set object_id [db_nextval acs_object_id_seq] + +ns_return 200 "text/html" $object_id \ No newline at end of file