i have a shared folder and want to attatch a folder action that will alert the user when the folder has been opened and/or closed. basically, letting the shared folder user know when someone is accessing that specific folder. is this even a possibility? if so, any help? no luck searching the archives and the web. thanx, jmarsh
When using OS 8.6, I attached the following as a folder action script to a shared folder. I believe it will work in OS 8.5-9.2.2 .Credit goes to Sal Soghoian .
(*
ADD - NEW ITEM ALERT
Sal Soghoian ©1998 Apple Computer
This Folder Action script is designed for use with Mac OS 8.5 and higher.
This Folder Action handler is triggered when items are added to the attached folder.
You can alter the default settings of this script by changing the parameters of the properties below.
*)
-- THESE PROPERTIES ARE FOR THE NOTIFICATION ROUTINE
property speak_alert : false -- if true, the script will speak the alert. If false, the script will display an alert dialog
property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.
-- THIS PROPERTY IS USED TO INDICATE WHETHER THE SCRIPT CHECKS THE INCOMING FILES FOR COMPLETED TRANSFER
-- SET THIS PROPERTY TO TRUE FOR FOLDERS SHARED VIA FILE SHARING
-- NOTE THAT ITEMS DROPPED IN SHARED FOLDERS WILL HAVE THEIR LABEL SET TO 7
property copy_checks_indicator : false
-- THESE PROPERTIES ARE FOR THE STATUS CHECKING ROUTINES
property item_check_delay_time : 2
property folder_check_delay_time : 3
property special_label_index : 7
on adding folder items to this_folder after receiving added_items
try
if copy_checks_indicator is true then
-- CHECK THE FILES TO MAKE SURE THEY"RE COMPLETELY AVAILABLE
set the added_items to my check_added_items(the added_items)
if the added_items is {} then return "no vaild items"
end if
tell application "Finder"
--get the name of the folder
set this_folder_name to the name of this_folder
end tell
-- find out how many new items have been placed in the folder
set new_item_count to the number of items in the added_items
--create the alert string
set alert_message to "Folder Actions Alert:" & return & return
if new_item_count is greater than 1 then
set alert_message to alert_message & ((new_item_count as text) & " new items have been placed in folder “" & this_folder_name) & "”."
else
set alert_message to alert_message & "One new item has been placed in folder “" & this_folder_name & "”."
end if
if speak_alert is true then
try
say ("Alert. " & the alert_message)
return "alert spoken"
on error -- speech is not installed or active
-- do nothing and continue with script to present dialog
end try
end if
set the alert_message to (the alert_message & return & return & "Would you like to view the added items?")
display dialog the alert_message buttons {"Yes", "No"} default button 2 with icon 1 giving up after dialog_timeout
set the user_choice to the button returned of the result
if user_choice is "Yes" then
tell application "Finder"
--go to the desktop
activate
--open the folder
open this_folder
--select the items
set the selection to the added_items
end tell
end if
end try
end adding folder items to
on remove_labels(the added_items)
tell application "Finder"
repeat with this_item in the added_items
set the label index of this_item to 0
end repeat
end tell
end remove_labels
on check_added_items(the added_items)
-- check the transfer status of every added file to determine
-- if each file has completed being moved into the attached folder
set the notbusy_items to {}
repeat with i from 1 to the number of items in the added_items
set this_item to (item i of the added_items)
if my check_busy_status(this_item) is false then
set the end of the notbusy_items to this_item
end if
end repeat
return the notbusy_items
end check_added_items
on check_busy_status(this_item)
-- a folder can contain items partially transfered
-- this routine will wait for all the folder contents to transfer
if the last character of (this_item as text) is ":" then
set the check_flag to false
repeat
-- look for any files within the folder that are still transferring
tell application "Finder"
try
set the busy_items to the name of every file of the entire contents of this_item ¬
whose file type begins with "bzy"
on error
set the busy_items to {}
end try
end tell
if the check_flag is true and the busy_items is {} then return false
-- pause for the indicated time
delay the folder_check_delay_time
-- set the flag and check again
set the check_flag to true
end repeat
else -- the passed item is a single file, suitcase, clipping, etc.
-- check the label of the item. If it is the marked label, then it's already been processed so ignore.
tell application "Finder"
if (the label index of this_item) as integer is the special_label_index then
return "ignore"
end if
end tell
set the check_flag to false
repeat
tell application "Finder"
set the item_file_type to the file type of this_item
end tell
if the check_flag is true and ¬
the item_file_type does not start with "bzy" then
tell application "Finder"
set the label index of this_item to the special_label_index
end tell
-- allow the Finder time to change the label
delay the item_check_delay_time
return false
else if the item_file_type does not start with "bzy" then
-- set the flag and check again
set the check_flag to true
end if
-- pause for the indicated time
delay the item_check_delay_time
end repeat
end if
end check_busy_status
--HANDLER FOR KEEPING THIS FOLDER OPEN
--To activate the handler, remove the comment markers (the parens and asterisks) at the beginning and end of the following handler and save this script.
(*
on closing folder window for this_folder
beep
tell application "Finder"
open this_folder
end tell
end closing folder window for
*)