Index: openacs-4/packages/contacts-portlet/contacts-portlet.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts-portlet/contacts-portlet.info,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/contacts-portlet/contacts-portlet.info 14 Jun 2005 06:49:05 -0000 1.1 @@ -0,0 +1,28 @@ + + + + + Contacts Portlet + Contacts Portlets + f + f + + + Bjoern Kiesbye + Malte Sussdorff + Portlet for the Contacts Package. + Cognovis + Portlet for the Contacts Package. + 0 + + + + + + + + + + + + Index: openacs-4/packages/contacts-portlet/sql/postgresql/contacts-portlet-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts-portlet/sql/postgresql/contacts-portlet-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/contacts-portlet/sql/postgresql/contacts-portlet-create.sql 14 Jun 2005 06:49:05 -0000 1.1 @@ -0,0 +1,221 @@ +-- +-- Copyright (C) 2005 Cognovis +-- +-- This file is part of dotLRN. +-- +-- dotLRN 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. +-- +-- dotLRN 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. +-- + +-- +-- /project-manager-portlet/sql/oracle/project-manager-portlet-create.sql +-- + +-- Creates Project Manager portlet + +-- Copyright (C) 2005 Cognovis +-- @author Bjoern Kiesbye (kiesbye@theservice.de) +-- @creation-date 2005-08-06 + + +-- This is free software distributed under the terms of the GNU Public +-- License version 2 or higher. Full text of the license is available +-- from the GNU Project: http://www.fsf.org/copyleft/gpl.html + + +create function inline_0() +returns integer as ' +declare + ds_id portal_datasources.datasource_id%TYPE; +begin + ds_id := portal_datasource__new( + ''contacts_portlet'', + ''Displays Contacts'' + ); + + + -- the standard 4 params + + -- shadeable_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''shadeable_p'', + ''t'' +); + + + -- hideable_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''hideable_p'', + ''t'' +); + + -- user_editable_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''user_editable_p'', + ''t'' +); + + -- shaded_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''shaded_p'', + ''f'' +); + + -- link_hideable_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''link_hideable_p'', + ''t'' +); + + + perform portal_datasource__set_def_param( + ds_id, + ''t'', + ''f'', + ''scoped_p'', + ''t'' + ); + + + + return 0; + +end;' language 'plpgsql'; +select inline_0(); +drop function inline_0(); + + +create function inline_0() +returns integer as ' +declare + foo integer; +begin + -- create the implementation + foo := acs_sc_impl__new ( + ''portal_datasource'', + ''contacts_portlet'', + ''contacts_portlet'' + ); + + return 0; + +end;' language 'plpgsql'; +select inline_0(); +drop function inline_0(); + + + +create function inline_0() +returns integer as ' +declare + foo integer; +begin + + -- add all the hooks + foo := acs_sc_impl_alias__new ( + ''portal_datasource'', + ''contacts_portlet'', + ''GetMyName'', + ''contacts_portlet::get_my_name'', + ''TCL'' + ); + + foo := acs_sc_impl_alias__new ( + ''portal_datasource'', + ''contacts_portlet'', + ''GetPrettyName'', + ''contacts_portlet::get_pretty_name'', + ''TCL'' + ); + + foo := acs_sc_impl_alias__new ( + ''portal_datasource'', + ''contacts_portlet'', + ''Link'', + ''contacts_portlet::link'', + ''TCL'' + ); + + foo := acs_sc_impl_alias__new ( + ''portal_datasource'', + ''contacts_portlet'', + ''AddSelfToPage'', + ''contacts_portlet::add_self_to_page'', + ''TCL'' + ); + + foo := acs_sc_impl_alias__new ( + ''portal_datasource'', + ''contacts_portlet'', + ''Show'', + ''contacts_portlet::show'', + ''TCL'' + ); + + foo := acs_sc_impl_alias__new ( + ''portal_datasource'', + ''contacts_portlet'', + ''Edit'', + ''contacts_portlet::edit'', + ''TCL'' + ); + + foo := acs_sc_impl_alias__new ( + ''portal_datasource'', + ''contacts_portlet'', + ''RemoveSelfFromPage'', + ''contacts_portlet::remove_self_from_page'', + ''TCL'' + ); + + return 0; + +end;' language 'plpgsql'; +select inline_0(); +drop function inline_0(); + + + +create function inline_0() +returns integer as ' +declare + foo integer; +begin + + -- Add the binding + perform acs_sc_binding__new ( + ''portal_datasource'', + ''contacts_portlet'' + ); + + return 0; + +end;' language 'plpgsql'; +select inline_0(); +drop function inline_0(); + + + + Index: openacs-4/packages/contacts-portlet/tcl/contacts-portlet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts-portlet/tcl/contacts-portlet-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/contacts-portlet/tcl/contacts-portlet-procs.tcl 14 Jun 2005 06:49:05 -0000 1.1 @@ -0,0 +1,123 @@ +# +# Copyright (C) 2005 Cognovis +# Author: Bjoern Kiesbye (kiesbye@theservice.de) + +# This file is part of dotLRN. +# +# dotLRN 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. +# +# dotLRN 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 { + + Procedures to support the Contacts Package + + + @author kiesbye@theservice.de + @cvs-id $Id: contacts-portlet-procs.tcl + +} + +namespace eval contacts_portlet { + + ad_proc -private my_package_key { + } { + return "contacts-portlet" + } + + ad_proc -private get_my_name { + } { + return "contacts_portlet" + } + + ad_proc -public get_pretty_name { + } { + return "Contacts Portlet" + } + + ad_proc -public link { + } { + return [site_node::get_package_url -package_key contacts] + } + + ad_proc -public add_self_to_page { + {-portal_id:required} + {-package_id:required} + {-param_action "overwrite"} + {-page_name ""} + {-pretty_name ""} + {-force_region ""} + {-scoped_p ""} + + } { + Adds a Contact Portlet to the given page. + + @param portal_id The page to add self to + @return element_id The new element's id + + } { + + # allow overrides of pretty_name and force_region + if {[empty_string_p $pretty_name]} { + set pretty_name [get_pretty_name] + } + + if {[empty_string_p $force_region]} { + set force_region [parameter::get_from_package_key \ + -package_key [my_package_key] \ + -parameter "force_region" + ] + } + + set extra_params "" + + + return [portal::add_element_parameters \ + -portal_id $portal_id \ + -page_name $page_name \ + -portlet_name [get_my_name] \ + -value $package_id \ + -pretty_name $pretty_name \ + -force_region $force_region \ + -param_action $param_action + + ] + } + + + + + ad_proc -public remove_self_from_page { + {-portal_id:required} + + } { + Removes a Contacts Portlet from the given page. + + @param portal_id The page to remove self from + @param project_manager_id + } { + portal::remove_element_parameters \ + -portal_id $portal_id \ + -portlet_name [get_my_name] \ + } + + + + ad_proc -public show { + cf + } { + } { + portal::show_proc_helper \ + -package_key [my_package_key] \ + -config_list $cf + + } + +} Index: openacs-4/packages/contacts-portlet/www/contacts-portlet.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts-portlet/www/contacts-portlet.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/contacts-portlet/www/contacts-portlet.adp 14 Jun 2005 06:49:06 -0000 1.1 @@ -0,0 +1,5 @@ + + + + + Index: openacs-4/packages/contacts-portlet/www/contacts-portlet.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/contacts-portlet/www/contacts-portlet.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/contacts-portlet/www/contacts-portlet.tcl 14 Jun 2005 06:49:06 -0000 1.1 @@ -0,0 +1,20 @@ +# packages/contacts-portlet/www/contacts-portlet.tcl + +ad_page_contract { + + hallo + + @author Bjoern Kiesbye (bjoern_kiesbye@web.de) + @creation-date 2005-06-13 + @arch-tag: 6d750604-b469-457c-bc2f-09ec8f0deb16 + @cvs-id $Id: contacts-portlet.tcl,v 1.1 2005/06/14 06:49:06 maltes Exp $ +} { + +} -properties { + + package_id +} + +set package_id [apm_package_id_from_key contacts] +set community_id [dotlrn_community::get_community_id_from_url] +ns_log notice "community_id = $community_id" \ No newline at end of file Index: openacs-4/packages/dotlrn-contacts/tcl/dotlrn-contacts-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-contacts/tcl/dotlrn-contacts-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-contacts/tcl/dotlrn-contacts-procs.tcl 14 Jun 2005 06:47:16 -0000 1.1 @@ -0,0 +1,217 @@ +# Copyright (C) 2005 Cognovis +# This file is part of dotLRN. +# dotLRN 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. +# dotLRN 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 { + + the dotlrn applet for Contacts + + @author Bjoern Kiesbye (kiesbye@theservice.de) + @version $Id: dotlrn-contacts-procs.tcl,v 1.1 2005/06/14 06:47:16 maltes Exp $ +} + +namespace eval dotlrn_contacts {} + +ad_proc -public dotlrn_contacts::package_key { +} { + What package does this applet deal with? +} { + return "contacts" +} + +ad_proc -public dotlrn_contacts::my_package_key { +} { + What's my package key? +} { + return "dotlrn-contacts" +} + +ad_proc -public dotlrn_contacts::applet_key { +} { + What's my applet key? +} { + return "dotlrn_contacts" +} + +ad_proc -public dotlrn_contacts::get_pretty_name { +} { +} { + return "Contacts" +} + +ad_proc -public dotlrn_contacts::add_applet { +} { + Called for one time init - must be repeatable! + @return new pkg_id or 0 on failure +} { + + # Contacts Package is Singleton and is required to install + # this package, so just add the applet to dotlrn. + + dotlrn_applet::add_applet_to_dotlrn -applet_key [applet_key] -package_key [my_package_key] + +} + +ad_proc -public dotlrn_contacts::remove_applet { +} { + One-time destroy for when the entire applet is removed from dotlrn. +} { + ad_return_complaint 1 "[applet_key] remove_applet not implimented!" +} + + +ad_proc -public dotlrn_contacts::add_applet_to_community { + community_id +} { + Add the calendar applet to a specific dotlrn community + + @params community_id +} { + + + set portal_id [dotlrn_community::get_portal_id \ + -community_id $community_id \ + ] + + contacts_portlet::add_self_to_page -portal_id $portal_id + + + + # Just return the package_id from the mounted Contacts package (Singelton) + + set package_id [apm_package_id_from_key contacts] + + # Add this community to contacts + db_dml insert_map { + insert into contact_groups + (group_id,default_p,package_id) + values + (:community_id, 'f' ,:package_id) + } + + + # this should return the package_id + return $package_id +} + +ad_proc -public dotlrn_contacts::remove_applet_from_community { + community_id +} { + remove the applet from the community +} { + ad_return_complaint 1 "[applet_key] remove_applet_from_community not implimented!" +} + +ad_proc -public dotlrn_contacts::add_user { + user_id +} { + Called once when a user is added as a dotlrn user. +} { +} + +ad_proc -public dotlrn_contacts::remove_user { + user_id +} { + Remove a user from dotlrn +} { + + # Not yet implemented. +} + +ad_proc -public dotlrn_contacts::add_user_to_community { + community_id + user_id +} { + Add a user to a community +} { + + + set package_id [dotlrn_community::get_applet_package_id -community_id $community_id -applet_key [applet_key]] + set portal_id [dotlrn::get_portal_id -user_id $user_id] + + + contacts_portlet::add_self_to_page \ + -portal_id $portal_id \ + -package_id $package_id] \ + -param_action append + + +} + +ad_proc -public dotlrn_contacts::remove_user_from_community { + community_id + user_id +} { + Remove a user from a community +} { +} + +ad_proc -public dotlrn_contacts::add_portlet { + portal_id +} { + Add Portlet to the Portal + + @param portal_id +} { + + contacts_portlet::add_self_to_page -portal_id $portal_id -package_id 0 + +} + +ad_proc -public dotlrn_contacts::remove_portlet { + portal_id + args +} { + A helper proc to remove the underlying portlet from the given portal. + This is alot simpler than add_portlet. + + @param portal_id + @param args An ns_set with the project_manager_id. +} { + contacts_portlet::remove_self_from_page \ + -portal_id $portal_id +} + +ad_proc -public dotlrn_contacts::clone { + old_community_id + new_community_id +} { + Clone this applet's content from the old community to the new one +} { +} + +ad_proc -public dotlrn_contacts::change_event_handler { + community_id + event + old_value + new_value +} { + listens for the following events: rename +} { + switch $event { + rename { + + handle_rename -community_id $community_id -old_value\ + $old_value -new_value $new_value + } + } +} + +ad_proc -private dotlrn_contacts::handle_rename { + {-community_id:required} + {-old_value:required} + {-new_value:required} +} { + When a dotlrn community is renamed +} { + +} + +