Index: openacs-4/packages/attachments/attachments.info
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/attachments.info,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/attachments.info 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,34 @@
+
+
+
+
+ attachments
+ attachments
+ f
+ t
+
+
+
+ oracle
+ postgresql
+
+ Arjun Sanyal
+ attachments
+ OpenForce, Inc.
+ attachments
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: openacs-4/packages/attachments/sql/oracle/attachments-create.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/sql/oracle/attachments-create.sql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/sql/oracle/attachments-create.sql 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,41 @@
+--
+-- Copyright (C) 2001, 2002 OpenForce, Inc.
+--
+-- this is free software; you can redistribute it and/or modify it under the
+-- terms of the GNU General Public License as published by the Free Software
+-- Foundation; either version 2 of the License, or (at your option) any later
+-- version.
+--
+-- this is distributed in the hope that it will be useful, but WITHOUT ANY
+-- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+-- FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+-- details.
+--
+
+--
+-- attachments
+--
+-- @author arjun (arjun@openforce.net)
+-- @version $Id: attachments-create.sql,v 1.1 2002/07/01 20:16:23 ben Exp $
+--
+
+create table attachments_fs_root_folder_map (
+ package_id constraint attach_fldr_map_package_id_fk
+ references apm_packages (package_id)
+ constraint attach_fldr_map_package_id_un
+ unique,
+ folder_id constraint attach_fldr_map_folder_id_fk
+ references fs_root_folders (folder_id),
+ constraint attach_fldr_map_pk
+ primary key (package_id, folder_id)
+);
+
+create table attachments (
+ object_id constraint attachments_object_id_fk
+ references acs_objects(object_id)
+ on delete cascade,
+ item_id constraint attachments_item_id_fk
+ references cr_items(item_id),
+ constraint attachments_pk
+ primary key (object_id, item_id)
+);
Index: openacs-4/packages/attachments/sql/oracle/attachments-drop.sql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/sql/oracle/attachments-drop.sql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/sql/oracle/attachments-drop.sql 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,23 @@
+--
+-- Copyright (C) 2001, 2002 OpenForce, Inc.
+--
+-- this is free software; you can redistribute it and/or modify it under the
+-- terms of the GNU General Public License as published by the Free Software
+-- Foundation; either version 2 of the License, or (at your option) any later
+-- version.
+--
+-- this is distributed in the hope that it will be useful, but WITHOUT ANY
+-- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+-- FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+-- details.
+--
+
+--
+-- attachments
+--
+-- @author arjun (arjun@openforce.net)
+-- @version $Id: attachments-drop.sql,v 1.1 2002/07/01 20:16:23 ben Exp $
+--
+
+drop table attachments;
+drop table attachment_root_folders;
Index: openacs-4/packages/attachments/tcl/attachments-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/tcl/attachments-procs.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/tcl/attachments-procs.tcl 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,63 @@
+# Copyright (C) 2001, 2002 OpenForce, Inc.
+#
+# this is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# this is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+
+ad_library {
+ Attachments
+
+ @author Arjun Sanyal (arjun@openforce.net)
+ @version $Id: attachments-procs.tcl,v 1.1 2002/07/01 20:16:23 ben Exp $
+}
+
+namespace eval attachments {
+
+ ad_proc -public root_folder_p {
+ {-package_id:required}
+ } {
+ Returns 1 if the package_id has an fs_folder mapped to it
+ } {
+ return [db_string root_folder_p_select {} -default 0]
+ }
+
+ ad_proc -public get_root_folder {
+ {-package_id:required}
+ } {
+ } {
+ return [db_1row get_root_folder_select {}]
+ }
+
+ ad_proc -public root_folder_map_p {
+ {-package_id:required}
+ } {
+ Returns 1 if the package_id has an fs_folder mapped to it
+ } {
+ # this is a duplicate (Ben)
+ return [root_folder_p -package_id $package_id]
+ }
+
+ ad_proc -public map_root_folder {
+ {-package_id:required}
+ {-folder_id:required}
+ } {
+ } {
+ db_dml map_root_folder_insert {}
+ }
+
+ ad_proc -public unmap_root_folder {
+ {-package_id:required}
+ {-folder_id:required}
+ } {
+ } {
+ db_dml unmap_root_folder_delete {}
+ }
+
+}
Index: openacs-4/packages/attachments/tcl/attachments-procs.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/tcl/attachments-procs.xql,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/tcl/attachments-procs.xql 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,35 @@
+
+
+
+
+
+select 1 from attachments_folder_map
+where package_id = :package_id
+
+
+
+
+
+select folder_id from attachments_folder_map
+where package_id = :package_id
+
+
+
+
+
+insert into attachments_folder_map
+(package_id, folder_id)
+values
+(:package_id, :folder_id)
+
+
+
+
+
+delete from attachments_folder_map where
+package_id = :package_id and
+folder_id = :folder_id
+
+
+
+
Index: openacs-4/packages/attachments/www/admin/new-root-folder-map-2.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/www/admin/new-root-folder-map-2.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/www/admin/new-root-folder-map-2.tcl 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,39 @@
+#
+# Copyright (C) 2002 OpenForce, Inc.
+#
+# this is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# this is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+
+ad_page_contract {
+
+ Creates a new fs root folder and maps it to the passed in packge_id
+
+ @author Arjun Sanyal (arjun@openforce.net)
+ @version $Id: new-root-folder-map-2.tcl,v 1.1 2002/07/01 20:16:23 ben Exp $
+
+} -query {
+ {package_id:notnull}
+ {referer:notnull}
+}
+
+# apm sucks
+set instance_name [db_string instance_name_select "select instance_name from apm_packages where package_id = :package_id"]
+
+set folder_id [fs::new_root_folder \
+ -package_id $package_id \
+ -pretty_name "$instance_name's Attachments" \
+ -description "Created by the attachments packge"
+]
+
+attachments::map_root_folder -package_id $package_id -folder_id $folder_id
+
+
+ad_returnredirect $referer
Index: openacs-4/packages/attachments/www/admin/new-root-folder-map.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/www/admin/new-root-folder-map.adp,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/www/admin/new-root-folder-map.adp 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,22 @@
+
+Add Attachment Folder Link
+
+Add folder Link
+
+
+ No file-storage folders found to link to. Would you like to create one?
+
+
+
+
+
+
+ Found file-storage folder XXX folder_name XXX ... would you like to link to it?
+
Index: openacs-4/packages/attachments/www/admin/new-root-folder-map.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/www/admin/new-root-folder-map.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/www/admin/new-root-folder-map.tcl 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,71 @@
+#
+# Copyright (C) 2002 OpenForce, Inc.
+#
+# this is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# this is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+
+ad_page_contract {
+ Tries to find an appropriate fs root folder for the passed in package_id.
+ If it can't find one, it prompts to make new one.
+
+ @author Arjun Sanyal (arjun@openforce.net)
+ @version $Id: new-root-folder-map.tcl,v 1.1 2002/07/01 20:16:23 ben Exp $
+
+} -query {
+ {package_id:notnull}
+ {referer:notnull}
+}
+
+# can't use the get_root_folder proc since it creates
+# a new one if one doesn't exist. A BUG.
+set root_folder_id [db_string has_fs_root_folder_p_select \
+ "select folder_id from fs_root_folders where package_id = :package_id" \
+ -default 0
+]
+
+if {$root_folder_id == 0} {
+ # look for a fs root folder candidate, by looking for an file-storage
+ # sibling of our parent (uncle? or aunt? node). Should generalize sibling
+ # stuff, search by parent etc.
+ set parent_id [site_node::get_parent \
+ -node_id [site_node::get_node_id_from_object_id -object_id $package_id]
+ ]
+
+ #
+ # todo
+ #
+
+ # if we found one, get that node's info and present it
+ # set root_folder_id xxx
+
+ # else ask to create a new root folder
+ ad_return_template
+
+
+} else {
+ if {[attachments::root_folder_p -pacakge_id $package_id]} {
+ # sanity check that the attachments_root_folder and fs_root_folder match
+ set attachments_root_folder [attachments::get_root_folder \
+ -package_id $package_id
+ ]
+
+ if {$attachments_root_folder != $root_folder_id} {
+ ad_return_complaint 1 "Error: Attachment root folder and fs root folder different!"
+ } else {
+ # since this pkg already has a root folder do the mapping and return
+ attachments::map_root_folder \
+ -package_id $package_id \
+ -folder_id $root_folder_id
+
+ ad_returnredirect $referer
+ }
+ }
+}
Index: openacs-4/packages/attachments/www/admin/redirect.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/attachments/www/admin/redirect.tcl,v
diff -u
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ openacs-4/packages/attachments/www/admin/redirect.tcl 1 Jul 2002 20:16:23 -0000 1.1
@@ -0,0 +1,23 @@
+#
+# Copyright (C) 2002 OpenForce, Inc.
+#
+# this is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# this is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+# details.
+#
+
+ad_page_contract {
+
+ @author Arjun Sanyal (arjun@openforce.net)
+ @version $Id: redirect.tcl,v 1.1 2002/07/01 20:16:23 ben Exp $
+
+} -query {
+ {referer:notnull}
+}
+ad_returnredirect $referer