Index: openacs-4/packages/eduwiki/catalog/eduwiki.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/catalog/eduwiki.en_US.ISO-8859-1.xml,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/catalog/eduwiki.en_US.ISO-8859-1.xml 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,119 @@ + + + + Eduwiki Activities + Activities by other groups + Eduwiki activities by other students + Activity Index + View activity related pages + Add Eduwiki Activity + New Group + Add Member + Add Group + Group creation + Admin + at + Go Back + Cancel + Group can't be deleted, It's related with Eduwiki Tasks + Category + Close Date + Close Date must be after current date + Close Date must be after Start Date + Close time + Community Members + Class Members + Comparing + Content + Delete Group + Delete this page ... + Description not available + diff + Differences for: %page_title% + Hide + Edit Eduwiki Task + Edit Eduwiki Page + Creator + Description + This is the default start page of Eduwiki. + In this page you will find your Activity Index. + Related Eduwiki Pages to this Activity + Eduwiki Pages Administration + Educational Wiki + Student + Students not in activity + Eduwiki Activity Description + Activity Pages + Eduwiki Administration + Title + Eduwiki Task + Enabled + Finish + Function mode + Groups Administration + Group Wiki + Group member added + Group member removed + Group Members + Group name + Available Groups + Groups Administration + Group Members + Selected Groups for Activity + Final date to edit Eduwiki Pages + If you select Yes, all class members will be able to edit the pages. If you select No, only Wiki owner will edit the page. + This is the date to start editing the Wiki Pages. + Hide Groups display + Index + Eduwiki Index + Live Revision + You must select one group to add members + Can owner (student, group, teacher) create new wiki pages? + Will the Wiki be editable by all members of the class? + Will the Wiki be editable by members of the group? + Will the Wiki be editable by the student? + Will the Wiki be visible by all members of the class? + Will this wiki require a grade on the class? + Make this Revision Current + modified by + New Page + No + No groups + No selected groups + No available groups + No available members + No members for group + No selected group + Wiki Title + There are not available pages for this Eduwiki Task + points + Start date must be after current date + Start Date + Start time + Remove Member + Remove Group + Revisions history: + Save + Save Group + Please, choose one Eduwiki Activity + Select Groups + Show revisions of this page ... + Separate Groups + Add student to activity + Student Wiki + Students Administration + Eduwiki task Groups + Teacher Wiki + No Eduwiki Activity available + Version + View activities by other groups and activity description + View activities by other students and activity description + View activity description + Current Live Revision + View Item + Visible Groups + You must let all users to view pages to let them edit pages + Wiki Type + with + Yes + Index: openacs-4/packages/eduwiki/catalog/eduwiki.es_ES.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/catalog/eduwiki.es_ES.ISO-8859-1.xml,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/catalog/eduwiki.es_ES.ISO-8859-1.xml 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,121 @@ + + + + Actividades Eduwiki + Actividad de otros grupos + Actividad de otros estudiantes + �ndice de Actividad + Ver p�ginas relacionadas + Agregar actividad Eduwiki + Crear Grupo + Agregar Miembro + Agregar Grupo + Creaci�n de Grupo + Administrar + en la fecha + Regresar + Cancelar + El grupo no pudo ser borrado. Est� relacionado con otras actividades de Eduwiki. + Categor�a + Fecha de Finalizaci�n + La fecha de Fin de la actividad debe ser mayor a la fecha actual + La fecha de finalizaci�n debe ser mayor a la fecha de inicio + Hora de Finalizaci�n + Miembros del Curso + Miembros del Curso + Comparaci�n de versiones + Contenido + Eliminar Grupo + Eliminar esta p�gina ... + Descripci�n no disponible + diferencias + Diferencias para: %page_title% + Ocultar + Editar actividad Eduwiki + Editar P�gina Eduwiki + Autor + Descripci�n + Esta es la p�gina de Inicio de Eduwiki, en esta p�gina encontrar� el �ndice de P�ginas creadas para la actividad de Eduwiki, seg�n el tipo de Actividad +asignada por el catedr�tico usted tendr� la opci�n de Crear o Editar P�ginas. + A continuaci�n econtrar� el listado de actividades disponibles y el listado de p�ginas de su actividad. + P�ginas relacionadas con Actividad + Administraci�n de P�ginas Eduwiki + Wiki Educativo + Estudiante + Estudiantes no asociados a la actividad + Descripci�n de la Actividad + P�ginas de Actividad Eduwiki + Administraci�n Eduwiki + T�tulo + Actividad Eduwiki + Mostrar + Finalizar + Modo de Funci�n + Administraci�n de Grupos + Wiki de Grupos + Miembro del Grupo Agregado + Miembro del Grupo removido + Miembros del grupo + Nombre de grupo + Grupos Disponibles + Administraci�n de Grupos + Miembros del Grupo + Grupos Seleccionados para Actividad + Luego de esta fecha la edici�n de p�ginas para la actividad ser� deshabilitada (No es requerida) + Al seleccionar S�, todos los miembros del curso podr�n editar la p�gina, de lo contrario, �nicamente el due�o de la p�gina podr� editar. + + Fecha que indica el inicio del per�odo para editar la actividad (No es requerida) + Esconder vista de Administraci�n de Grupos + �ndice + �ndice Eduwiki + Versi�n Activa + Debe seleccionar un grupo para agregar usuarios + �El due�o del wiki podr� crear nuevas p�ginas? + �Ser� el wiki editable por todos los miembros de la clase? + �Ser� el wiki editable por los miembros del grupo? + �Ser� el Wiki editable por el estudiante? + �El Wiki ser� visible por todos los miembros de la clase? + �El Wiki tendr� una nota asociada? + Marcar como versi�n activa + modificada por + Nueva P�gina + No + Sin Grupos + No hay grupos para la actividad + No hay grupos disponibles + No hay miembros disponibles + El grupo no tiene miembros + No hay grupo seleccionado + T�tulo de P�gina + No hay p�ginas disponibles para esta actividad + puntos + La fecha de inicio de la actividad debe ser mayor a la fecha actual + Fecha de Inicio + Hora de Inicio + Remover Miembro + Remover Grupo + Historial de modificaciones: + Guardar + Guardar Grupo + Debe seleccionar una Actividad de Eduwiki + Seleccionar Grupos + Mostrar versiones de esta p�gina ... + Grupos Separados + Asociar estudiante a la actividad + Wiki de Estudiante + Administraci�n de Estudiantes + Grupos de actividad Eduwiki + Wiki de Profesor + No hay actividades Eduwiki disponibles + Versi�n + Ver actividades de otros grupos y descripci�n de la actividad + Ver actividades de otros alumnos y descripci�n de actividad + Ver descripci�n de la Actividad + Versi�n Activa actual + Ver P�gina + Grupos Visibles + Debe habilitar que todos los alumnos puedan ver las p�ginas para permitir que editen las mismas. + Tipo de Eduwiki + con + S� + Index: openacs-4/packages/eduwiki/catalog/eduwiki.es_GT.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/catalog/eduwiki.es_GT.ISO-8859-1.xml,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/catalog/eduwiki.es_GT.ISO-8859-1.xml 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,121 @@ + + + + Actividades Eduwiki + Actividad de otros grupos + Actividad de otros estudiantes + �ndice de Actividad + Ver p�ginas relacionadas + Agregar actividad Eduwiki + Crear Grupo + Agregar Miembro + Agregar Grupo + Creaci�n de Grupo + Administrar + en la fecha + Regresar + Cancelar + El grupo no pudo ser borrado. Est� relacionado con otras actividades de Eduwiki. + Categor�a + Fecha de Finalizaci�n + La fecha de Fin de la actividad debe ser mayor a la fecha actual + La fecha de finalizaci�n debe ser mayor a la fecha de inicio + Hora de Finalizaci�n + Miembros del Curso + Miembros del Curso + Comparaci�n de versiones + Contenido + Eliminar Grupo + Eliminar esta p�gina ... + Descripci�n no disponible + diferencias + Diferencias para: %page_title% + Ocultar + Editar actividad Eduwiki + Editar P�gina Eduwiki + Autor + Descripci�n + Esta es la p�gina de Inicio de Eduwiki, en esta p�gina encontrar� el �ndice de P�ginas creadas para la actividad de Eduwiki, seg�n el tipo de Actividad +asignada por el catedr�tico usted tendr� la opci�n de Crear o Editar P�ginas. + A continuaci�n econtrar� el listado de actividades disponibles y el listado de p�ginas de su actividad. + P�ginas relacionadas con Actividad + Administraci�n de P�ginas Eduwiki + Wiki Educativo + Estudiante + Estudiantes no asociados a la actividad + Descripci�n de la Actividad + P�ginas de Actividad Eduwiki + Administraci�n Eduwiki + T�tulo + Actividad Eduwiki + Mostrar + Finalizar + Modo de Funci�n + Administraci�n de Grupos + Wiki de Grupos + Miembro del Grupo Agregado + Miembro del Grupo removido + Miembros del grupo + Nombre de grupo + Grupos Disponibles + Administraci�n de Grupos + Miembros del Grupo + Grupos Seleccionados para Actividad + Luego de esta fecha la edici�n de p�ginas para la actividad ser� deshabilitada (No es requerida) + Al seleccionar S�, todos los miembros del curso podr�n editar la p�gina, de lo contrario, �nicamente el due�o de la p�gina podr� editar. + + Fecha que indica el inicio del per�odo para editar la actividad (No es requerida) + Esconder vista de Administraci�n de Grupos + �ndice + �ndice Eduwiki + Versi�n Activa + Debe seleccionar un grupo para agregar usuarios + �El due�o del wiki podr� crear nuevas p�ginas? + �Ser� el wiki editable por todos los miembros de la clase? + �Ser� el wiki editable por los miembros del grupo? + �Ser� el Wiki editable por el estudiante? + �El Wiki ser� visible por todos los miembros de la clase? + �El Wiki tendr� una nota asociada? + Marcar como versi�n activa + modificada por + Nueva P�gina + No + Sin Grupos + No hay grupos para la actividad + No hay grupos disponibles + No hay miembros disponibles + El grupo no tiene miembros + No hay grupo seleccionado + T�tulo de P�gina + No hay p�ginas disponibles para esta actividad + puntos + La fecha de inicio de la actividad debe ser mayor a la fecha actual + Fecha de Inicio + Hora de Inicio + Remover Miembro + Remover Grupo + Historial de modificaciones: + Guardar + Guardar Grupo + Debe seleccionar una Actividad de Eduwiki + Seleccionar Grupos + Mostrar versiones de esta p�gina ... + Grupos Separados + Asociar estudiante a la actividad + Wiki de Estudiante + Administraci�n de Estudiantes + Grupos de actividad Eduwiki + Wiki de Profesor + No hay actividades Eduwiki disponibles + Versi�n + Ver actividades de otros grupos y descripci�n de la actividad + Ver actividades de otros alumnos y descripci�n de actividad + Ver descripci�n de la Actividad + Versi�n Activa actual + Ver P�gina + Grupos Visibles + Debe habilitar que todos los alumnos puedan ver las p�ginas para permitir que editen las mismas. + Tipo de Eduwiki + con + S� + Index: openacs-4/packages/eduwiki/tcl/apm-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/tcl/apm-callback-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/tcl/apm-callback-procs.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,88 @@ +# /packages/eduwiki/tcl/apm-callback-procs.tcl + +ad_library { + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-22 +} + +::xo::db::require package xowiki + +namespace eval eduwiki::apm {} + +ad_proc -public eduwiki::apm::after_mount { + {-package_id:required} + {-node_id:required} +} { + Set eduwiki pages permissions +} { + + ::xowiki::Package initialize -package_id $package_id + + # set eduwiki permissions + if { [permission::inherit_p -object_id $package_id] } { + permission::toggle_inherit -object_id $package_id + } + + # set admin_rels + set sw_group_id [application_group::group_id_from_package_id -package_id [ad_conn subsite_id]] + set rel_id [group::get_rel_segment -group_id $sw_group_id -type admin_rel] + permission::grant -object_id $package_id -party_id $rel_id -privilege admin + + # set dotlrn_admin_rel + set comm_id [dotlrn_community::get_community_id] + set rel_id [group::get_rel_segment -group_id $comm_id -type dotlrn_admin_rel] + permission::grant -object_id $package_id -party_id $rel_id -privilege admin + + # set dotlrn_member_rel + set rel_id [group::get_rel_segment -group_id $comm_id -type dotlrn_member_rel] + permission::grant -object_id $package_id -party_id $rel_id -privilege read + + set root_directory [get_server_root] + set prototypes_path "$root_directory/packages/eduwiki/www/prototypes" + set folder_id [content::folder::get_folder_from_package \ + -package_id $package_id] + + # set object_id + set folder_object_id [content::item::get_id_by_name \ + -name "::$folder_id"\ + -parent_id $folder_id] + set p [::xowiki::Package instantiate_page_from_id -item_id $folder_object_id] + set editor_page [source "${prototypes_path}/editor.page"] + $p set text [$editor_page set text] + $p save + + # set index + set index "$prototypes_path/index.page" + set lang_prefix [string range [lang::system::locale] 0 1] + set index_name "${lang_prefix}:index" + if {[file readable $index]} { + set page [source $index] + $page configure -name $index_name \ + -parent_id $folder_id -package_id $package_id + $page set nls_language [lang::system::locale] + $page destroy_on_cleanup + $page initialize_loaded_object + $page save_new + set item_id [$page set item_id] + #set index permissions + if { [permission::inherit_p -object_id $item_id] } { + permission::toggle_inherit -object_id $item_id + } + + # set admin_rels + set sw_group_id [application_group::group_id_from_package_id -package_id [ad_conn subsite_id]] + set rel_id [group::get_rel_segment -group_id $sw_group_id -type admin_rel] + permission::grant -object_id $item_id -party_id $rel_id -privilege admin + + # set dotlrn_admin_rel + set comm_id [dotlrn_community::get_community_id] + set rel_id [group::get_rel_segment -group_id $comm_id -type dotlrn_admin_rel] + permission::grant -object_id $item_id -party_id $rel_id -privilege read + + # set dotlrn_member_rel + set rel_id [group::get_rel_segment -group_id $comm_id -type dotlrn_member_rel] + permission::grant -object_id $item_id -party_id $rel_id -privilege read + } +} + Index: openacs-4/packages/eduwiki/tcl/eduwiki-includelet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/tcl/eduwiki-includelet-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/tcl/eduwiki-includelet-procs.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,447 @@ +# /packages/eduwiki/tcl/eduwiki-includelet-procs.tcl + +::xo::library doc { + Eduwiki - includelet definitions + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-16 + @cvs-id $Id $ +} + +::xo::db::require package xowiki + +namespace eval ::xowiki::includelet { + # + # Define additional elements for includelets + # eduwiki-activities-pages + # activity-pages + # activity-info + + # + # Create an includelet called eduwiki-activities-pages, to present the pages for the activity + # + + ::xowiki::IncludeletClass create eduwiki-activities-pages \ + -superclass ::xowiki::Includelet \ + -parameter { + {title "#eduwiki.activities#"} + {parameter_declaration { + {-eduwiki_id ""} + {-orderby "title,desc"} + {-menu_buttons edit} + {-locale ""} + {-range ""} + }} + } + + eduwiki-activities-pages instproc render {} { + my get_parameters + + my instvar __including_page + ::xo::Page requireCSS "/resources/acs-templating/lists.css" + set admin_p [::xo::cc permission -object_id $package_id -privilege admin \ + -party_id [::xo::cc set untrusted_user_id]] + set show_heritage $admin_p + + lappend ::xowiki_page_item_id_rendered [$__including_page item_id] + $__including_page set __is_book_page 1 + + foreach {locale locale_clause} \ + [::xowiki::Includelet locale_clause -revisions p -items p $package_id $locale] break + + set return_url [::xo::cc url] + # eduwiki_category + set ecategory "" + + if { ![empty_string_p $eduwiki_id] } { + # show activity related pages + if {[::xo::db::Class exists_in_db -id $eduwiki_id]} { + set eduwiki_item_id [::eduwiki::EduwikiTask get_instance_from_db -item_id $eduwiki_id] + set ecategory [$eduwiki_item_id set eduwiki_category] + } + + TableWidget index -volatile \ + -actions "" \ + -columns { + AnchorField title -label "[_ eduwiki.Eduwiki_Title_]" -orderby title + Field creator -label "[_ eduwiki.Eduwiki_creator_]" -orderby creator + } + + foreach {att order} [split $orderby ,] break + index orderby -order [expr {$order eq "asc" ? "increasing" : "decreasing"}] $att + + # + # The query selects all Eduwiki Pages from the Package specific folder. + # Per default the following attributes are retrieved: + # - item_id, name, publish_status, and object_type. + # + set folder_id [$package_id folder_id] + set where_clause "e.page_id = ci.item_id and e.index_p = 't'" + if { ![empty_string_p $eduwiki_id] } { + append where_clause " and e.eduwiki_id = :eduwiki_id" + } + # check publish_status + append where_clause " and ci.publish_status = 'ready'" + + db_foreach instance_select \ + [::xowiki::Page instance_select_query \ + -parent_id $folder_id \ + -from_clause ", eduwiki_pages_map e" \ + -select_attributes [list "bt.revision_id as page_id" title creation_user party_id ]\ + -where_clause $where_clause \ + ] { + + if { [permission::permission_p -object_id $item_id -privilege read] } { + set page_url "./$name" + if {![empty_string_p $party_id] } { + set creator [eduwiki::get_party_name -party_id $party_id] + } else { + set creator "" + } + index add \ + -title $title \ + -title.href [export_vars -base $page_url {{m view}}] \ + -creator $creator + } + } + } else { + my set title "#eduwiki.activities#" + # show eduwiki activities + TableWidget index -volatile \ + -actions "" \ + -columns { + AnchorField title -label "[_ eduwiki.Eduwiki_Title_]" -orderby title + } + foreach {att order} [split $orderby ,] break + index orderby -order [expr {$order eq "asc" ? "increasing" : "decreasing"}] $att + set folder_id [$package_id folder_id] + set user_id [::xo::cc user_id] + + db_foreach instance_select \ + [::eduwiki::EduwikiTask instance_select_query \ + -parent_id $package_id \ + -from_clause ", eduwiki_tasks e" \ + -select_attributes [list "object_id as eduwiki_id" title eduwiki_category creation_user \ + "to_char(release_date,'DD-MM-YYYY HH24:MI:SS') as release_date" \ + "to_char(close_date,'DD-MM-YYYY HH24:MI:SS') as close_date"]\ + -where_clause "e.eduwiki_id = acs_objects.object_id and ci.publish_status = 'ready'" \ + ] { + + set page_url [eduwiki::get_best_eduwiki_page_url -eduwiki_id $item_id \ + -user_id $user_id \ + -folder_id $folder_id \ + -eduwiki_category $eduwiki_category] + if {[empty_string_p $page_url]} { + set page_url "./" + set page_url [export_vars -base $page_url {{eduwiki_id $item_id}}] + } else { + set page_url "./$page_url" + set page_url [export_vars -base $page_url {{m view}}] + } + + + index add \ + -title $title \ + -title.href $page_url + } + + } + + if { [llength [$index children]] } { + if { ![empty_string_p $eduwiki_id] } { + if {$ecategory == "student"} { + my set title #eduwiki.activities_by_other_students# + } + if {$ecategory == "group"} { + my set title #eduwiki.activities_by_other_groups# + } + } + + return [index asHTML] + + } else { + return "[_ eduwiki.There_are_not_eduwiki_activities]" + } + + } +###### +## activity-pages + + ::xowiki::IncludeletClass create activity-pages \ + -superclass ::xowiki::Includelet \ + -parameter { + {title "#eduwiki.Eduwiki_task_Pages#"} + {parameter_declaration { + {-eduwiki_id ""} + {-party_id ""} + {-orderby "title,desc"} + {-menu_buttons edit} + {-locale ""} + {-range ""} + }} + } + + activity-pages instproc render {} { + my get_parameters + + my instvar __including_page + ::xo::Page requireCSS "/resources/acs-templating/lists.css" + template::head::add_css -href "/resources/eduwiki/xowiki.css" + set admin_p [::xo::cc permission -object_id $package_id -privilege admin \ + -party_id [::xo::cc set untrusted_user_id]] + set show_heritage $admin_p + set activity_pages_p 0 + + lappend ::xowiki_page_item_id_rendered [$__including_page item_id] + $__including_page set __is_book_page 1 + + set page_item_id [$__including_page item_id] + #set party_id + if {![empty_string_p $page_item_id]} { + if {[empty_string_p $eduwiki_id]} { + set eduwiki_id [eduwiki::get_eduwiki_task_id -page_item_id $page_item_id] + } + + if {![empty_string_p $eduwiki_id] && [empty_string_p $party_id] } { + set party_id [eduwiki::get_eduwiki_party_id -eduwiki_id $eduwiki_id -page_item_id $page_item_id] + } + + } + # check for index activity page + if {![empty_string_p $page_item_id] && ![empty_string_p $eduwiki_id]} { + set index_eduwiki_id [eduwiki::get_eduwiki_task_id -page_item_id $page_item_id] + if { [empty_string_p $index_eduwiki_id] } { + set activity_pages_p 1 + } + } + + + foreach {locale locale_clause} \ + [::xowiki::Includelet locale_clause -revisions p -items p $package_id $locale] break + + set return_url [::xo::cc url] + + if { !$activity_pages_p } { + + TableWidget index -volatile \ + -actions "" \ + -columns { + AnchorField title -label "[_ eduwiki.Page_Title_]" + } + + # + # The query selects all Eduwiki Pages from the Activity + # Per default the following attributes are retrieved: + # - item_id, name, publish_status, and object_type. + # + set folder_id [$package_id folder_id] + set where_clause "e.page_id = ci.item_id" + set eduwiki_category "professor" + if { ![empty_string_p $eduwiki_id] } { + append where_clause " and e.eduwiki_id = :eduwiki_id" + } + if { ![empty_string_p $party_id] } { + append where_clause " and e.party_id = :party_id" + } + if { ![empty_string_p $eduwiki_id] } { + # get eduwiki_category + set eduwiki_task_id [content::item::get_live_revision -item_id $eduwiki_id] + if {![empty_string_p $eduwiki_task_id]} { + set data_id [::xo::db::CrClass get_instance_from_db -revision_id $eduwiki_task_id] + set eduwiki_category [$data_id set eduwiki_category] + } + } + + # check publish_status + append where_clause " and ci.publish_status = 'ready'" + + set user_id [::xo::cc user_id] + db_foreach instance_select \ + [::xowiki::Page instance_select_query \ + -parent_id $folder_id \ + -from_clause ", eduwiki_pages_map e" \ + -select_attributes [list "bt.revision_id as page_id" title creation_user "e.party_id as creator_id" index_p]\ + -where_clause $where_clause \ + ] { + + if { [permission::permission_p -object_id $item_id -privilege read] } { + set page_url "./$name" + if { $index_p } { + if {![empty_string_p $creator_id] } { + set creator [eduwiki::get_party_name -party_id $creator_id] + } else { + set creator "" + } + } else { + if {![empty_string_p $creation_user] } { + set creator [eduwiki::get_party_name -party_id $creation_user] + } else { + set creator "" + } + } + + if { ![empty_string_p $party_id] } { + index add \ + -title $title \ + -title.href [export_vars -base $page_url {{m view}}] + } else { + if { $eduwiki_category == "professor" } { + #category professor + index add \ + -title $title \ + -title.href [export_vars -base $page_url {{m view}}] + } elseif { $eduwiki_category == "student" } { + #category student + if { $user_id == $creator_id } { + index add \ + -title $title \ + -title.href [export_vars -base $page_url {{m view}}] + } + } else { + #category group , check if member + if {[group::member_p -user_id $user_id -group_id $creator_id]} { + index add \ + -title $title \ + -title.href [export_vars -base $page_url {{m view}}] + } + } + } + } + } + } else { + + my set title "#eduwiki.activities#" + # show eduwiki activities + TableWidget index -volatile \ + -actions "" \ + -columns { + AnchorField title -label "[_ eduwiki.Eduwiki_Title_]" -orderby title + } + foreach {att order} [split $orderby ,] break + index orderby -order [expr {$order eq "asc" ? "increasing" : "decreasing"}] $att + set folder_id [$package_id folder_id] + set user_id [::xo::cc user_id] + + db_foreach instance_select \ + [::eduwiki::EduwikiTask instance_select_query \ + -parent_id $package_id \ + -from_clause ", eduwiki_tasks e" \ + -select_attributes [list "object_id as eduwiki_id" title eduwiki_category creation_user \ + "to_char(release_date,'DD-MM-YYYY HH24:MI:SS') as release_date" \ + "to_char(close_date,'DD-MM-YYYY HH24:MI:SS') as close_date"]\ + -where_clause "e.eduwiki_id = acs_objects.object_id and ci.publish_status = 'ready'" \ + ] { + + set page_url [eduwiki::get_best_eduwiki_page_url -eduwiki_id $item_id \ + -user_id $user_id \ + -folder_id $folder_id \ + -eduwiki_category $eduwiki_category] + if {[empty_string_p $page_url]} { + set page_url "./" + set page_url [export_vars -base $page_url {{eduwiki_id $item_id}}] + } else { + set page_url "./$page_url" + set page_url [export_vars -base $page_url {{m view}}] + } + + + index add \ + -title $title \ + -title.href $page_url + } + + } + + set output "" + if { ![empty_string_p $eduwiki_id] } { + if { [llength [$index children]] } { + set output [index asHTML] + #append autor + if {![empty_string_p $party_id] } { + set creator [eduwiki::get_party_name -party_id $party_id] + append output "#eduwiki.Eduwiki_creator_#: $creator
" + } + set description_link [$package_id make_link -privilege public -link "" $package_id {} eduwiki_id party_id] + set title_desc_link "#eduwiki.View_activity_description#" + if { $eduwiki_category == "student"} { + set title_desc_link "#eduwiki.view_activities_by_other_students#" + } + if { $eduwiki_category == "group"} { + set title_desc_link "#eduwiki.view_activities_by_other_groups#" + } + append output "
$title_desc_link
" + if { $activity_pages_p } { + set output [index asHTML] + } + + return $output + } else { + return "[_ eduwiki.select_eduwiki_to_see_pages]" + } + } else { + return "[_ eduwiki.select_eduwiki_to_see_pages]" + } + + } + +###### +## activity-info + + ::xowiki::IncludeletClass create activity-info \ + -superclass ::xowiki::Includelet \ + -parameter { + {__decoration portlet} + {title "#eduwiki.Eduwiki_task_Info#"} + {parameter_declaration { + {-eduwiki_id ""} + {-menu_buttons edit} + {-locale ""} + {-range ""} + }} + } + + activity-info instproc render {} { + my get_parameters + + my instvar __including_page + ::xo::Page requireCSS "/resources/acs-templating/lists.css" + set admin_p [::xo::cc permission -object_id $package_id -privilege admin \ + -party_id [::xo::cc set untrusted_user_id]] + set show_heritage $admin_p + + lappend ::xowiki_page_item_id_rendered [$__including_page item_id] + $__including_page set __is_book_page 1 + + foreach {locale locale_clause} \ + [::xowiki::Includelet locale_clause -revisions p -items p $package_id $locale] break + + set return_url [::xo::cc url] + set output "" + if {[exists_and_not_null eduwiki_id] && [::xo::db::Class exists_in_db -id $eduwiki_id]} { + set eduwiki_id [::eduwiki::EduwikiTask get_instance_from_db -item_id $eduwiki_id] + set description [$eduwiki_id set description] + set title [$eduwiki_id set title] + set eduwiki_category [$eduwiki_id set eduwiki_category] + set release_date [$eduwiki_id set release_date] + set close_date [$eduwiki_id set close_date] + append output "#eduwiki.Eduwiki_Title_# : $title
" + + append output "#eduwiki.Eduwiki_Descripti# : " + if { [llength $description] == 2 } { + set contents [lindex $description 0] + set format [lindex $description 1] + # if format is specified + append output $contents + return $output + } + append output $description + return $output + } else { + my set title "#eduwiki.IndexPage#" + return "[_ eduwiki.Eduwiki_instructions]" + } + + } + +###### +} Index: openacs-4/packages/eduwiki/tcl/eduwiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/tcl/eduwiki-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/tcl/eduwiki-procs.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,177 @@ +# /packages/eduwiki/tcl/eduwiki-procs.tcl + +::xo::library doc { + + Eduwiki package procs + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-01 +} + +namespace eval ::eduwiki {} + +ad_proc -public eduwiki::create_page { + {-page_title ""} + {-page_name ""} +} { + set package_id [ad_conn package_id] + ::xowiki::Package initialize -package_id $package_id + set folder_id [::xowiki::Page require_folder -name xowiki \ + -package_id $package_id] + set page [::xowiki::Page new] + set object_type "::xowiki::Page" + set lang_prefix [string range [lang::system::locale] 0 1] + set page_index [db_string page_index [$object_type instance_select_query -folder_id $folder_id -with_subtypes false -from_clause ",xowiki_page p" -where_clause "p.page_id = bt.revision_id" -count true]] + if { [empty_string_p $page_name] } { + set page_name "${lang_prefix}:page_[incr page_index]" + } + if {[db_string select_name { select 1 from cr_items where name = :page_name and parent_id = :folder_id} -default 0]} { + set page_name "${lang_prefix}:page_[incr page_index]_[format %0.0f [expr [random]* 10]]_[format \ + %0.0f [expr [random] * 10]]" + } + $page configure -name $page_name -parent_id $folder_id \ + -package_id $package_id + + if {![empty_string_p $page_title]} { + $page set title $page_title + } + + $page set nls_language [lang::system::locale] + + $page destroy_on_cleanup + $page initialize_loaded_object + set page_id [$page save_new] + set page_item_id [$page set item_id] + return [list $page_item_id $page_name] +} + +ad_proc -public eduwiki::set_eduwiki_permissions { + -eduwiki_page_id:required + {-party_id 0} + {-eduwiki_category "professor"} + {-eduwiki_visible_all_p "t"} + {-eduwiki_editable_all_p "t"} + {-eduwiki_create_all_p "t"} + {-eduwiki_index_p "f"} +} { + + # set eduwiki permissions + + # group or individual, party_id used + if { [permission::inherit_p -object_id $eduwiki_page_id] } { + permission::toggle_inherit -object_id $eduwiki_page_id + } + # set admin_rels + set sw_group_id [application_group::group_id_from_package_id -package_id [ad_conn subsite_id]] + set rel_id [group::get_rel_segment -group_id $sw_group_id -type admin_rel] + permission::grant -object_id $eduwiki_page_id -party_id $rel_id -privilege admin + + # set dotlrn_admin_rel + set comm_id [dotlrn_community::get_community_id] + set rel_id [group::get_rel_segment -group_id $comm_id -type dotlrn_admin_rel] + # if index_p dotlrn_admin_rel can't delete page + if { !$eduwiki_index_p } { + permission::grant -object_id $eduwiki_page_id -party_id $rel_id -privilege admin + } else { + permission::grant -object_id $eduwiki_page_id -party_id $rel_id -privilege read + permission::grant -object_id $eduwiki_page_id -party_id $rel_id -privilege write + permission::grant -object_id $eduwiki_page_id -party_id $rel_id -privilege create + } + + # set dotlrn_member_rel + set rel_id [group::get_rel_segment -group_id $comm_id -type dotlrn_member_rel] + permission::revoke -object_id $eduwiki_page_id -party_id $rel_id -privilege read + if { $eduwiki_visible_all_p } { + permission::grant -object_id $eduwiki_page_id -party_id $rel_id -privilege read + } + + # professor + if { $eduwiki_category == "professor" } { + permission::revoke -object_id $eduwiki_page_id -party_id $rel_id -privilege write + if { $eduwiki_editable_all_p } { + permission::grant -object_id $eduwiki_page_id -party_id $rel_id -privilege write + } + } + + # working with party_id + if { $party_id > 0 } { + permission::grant -object_id $eduwiki_page_id -party_id $party_id -privilege read + # ownwer can edit by default + permission::grant -object_id $eduwiki_page_id -party_id $party_id -privilege write + + permission::revoke -object_id $eduwiki_page_id -party_id $rel_id -privilege write + if { $eduwiki_editable_all_p } { + # can all members edit the page + permission::grant -object_id $eduwiki_page_id -party_id $rel_id -privilege write + } + permission::revoke -object_id $eduwiki_page_id -party_id $party_id -privilege create + if { $eduwiki_create_all_p } { + permission::grant -object_id $eduwiki_page_id -party_id $party_id -privilege create + } + } + +} + +ad_proc -public eduwiki::get_eduwiki_task_id { + -page_item_id:required +} { + return [db_string get_eduwiki_task_id { *SQL* } -default ""] +} + +ad_proc -public eduwiki::get_eduwiki_party_id { + -eduwiki_id:required + -page_item_id:required +} { + return [db_string get_eduwiki_party_id { *SQL* } -default ""] +} + +ad_proc -public eduwiki::get_party_name { + -party_id:required +} { + set object_type [db_string get_object_type { *SQL* } -default ""] + if {![empty_string_p $object_type]} { + if { $object_type == "user" } { + return [db_string get_user_party_name { *SQL* } -default ""] + } elseif { $object_type == "group" } { + return [db_string get_group_party_name { *SQL* } -default ""] + } + } + return "" +} + +ad_proc -public eduwiki::get_best_eduwiki_page_url { + -eduwiki_id:required + -user_id:required + -eduwiki_category:required + -folder_id:required +} { + + set where_clause "e.page_id = ci.item_id and e.eduwiki_id = :eduwiki_id and index_p = 't'" + set page_url "" + + db_foreach instance_select \ + [::xowiki::Page instance_select_query \ + -parent_id $folder_id \ + -from_clause ", eduwiki_pages_map e" \ + -select_attributes [list "bt.revision_id as page_id" title creation_user "e.party_id as creator_id" index_p]\ + -where_clause $where_clause \ + ] { + + if { $eduwiki_category == "professor" } { + set page_url $name + } elseif { $eduwiki_category == "student" } { + if { $user_id == $creator_id } { + set page_url $name + } + } else { + #category group + if {[group::member_p -user_id $user_id -group_id $creator_id]} { + set page_url $name + } + } + + } + + #default + return $page_url +} Index: openacs-4/packages/eduwiki/tcl/eduwiki-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/tcl/eduwiki-procs.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/tcl/eduwiki-procs.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,46 @@ + + + + + + + select party_id + from eduwiki_pages_map + where eduwiki_id = :eduwiki_id + and page_id = :page_item_id + + + + + + select eduwiki_id + from eduwiki_pages_map + where page_id = :page_item_id + + + + + + select object_type + from acs_objects + where object_id = :party_id + + + + + + select last_name || ',' || first_names + from persons + where person_id = :party_id + + + + + + select group_name + from groups + where group_id = :party_id + + + + Index: openacs-4/packages/eduwiki/tcl/eduwiki-xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/tcl/eduwiki-xowiki-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/tcl/eduwiki-xowiki-procs.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,397 @@ +#/packages/eduwiki/tcl/eduwiki-xowiki-procs.tcl + +::xo::library doc { + + Educational Wiki package procs + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-01 +} + +::xo::db::require package xowiki + +namespace eval ::eduwiki { + + ::xo::PackageMgr create ::eduwiki::Package \ + -package_key "eduwiki" -pretty_name "Educational Wiki" \ + -superclass ::xowiki::Package + + Package instproc initialize {} { + ::xowiki::Link instmixin add ::eduwiki::EduWikiLink + ::xowiki::Page instmixin add ::eduwiki::EduWikiPage + ::xowiki::WikiForm instmixin add ::eduwiki::EduWikiForm + next + } + + Package instproc destroy {} { + ::xowiki::Link instmixin delete ::eduwiki::EduWikiLink + ::xowiki::Page instmixin delete ::eduwiki::EduWikiPage + ::xowiki::WikiForm instmixin delete ::eduwiki::EduWikiForm + next + } + + Package instproc return_page { + {-adp:required} + {-variables:required} + {-form} + } { + foreach _var $variables { + if {[llength $_var] == 2} { + upvar [lindex $_var 0] [lindex $_var 0] + upvar [string trim [lindex $_var 1] $] \ + [string trim [lindex $_var 1] $] + } else { + upvar $_var [set _var] + } + } + + set activity_pages_p 1 + set page_title "" + set index_link "" + + if {[exists_and_not_null item_id]} { + if {[exists_and_not_null context_package_id]} { + set eduwiki_id [eduwiki::get_eduwiki_task_id -page_item_id $item_id] + if { ![empty_string_p $eduwiki_id] } { + set party_id [eduwiki::get_eduwiki_party_id -eduwiki_id $eduwiki_id -page_item_id $item_id] + set index_link [$context_package_id make_link -privilege public -link "" $context_package_id {} {eduwiki_id $eduwiki_id} party_id] + set page_title "#eduwiki.activity_index#" + } else { + set new_link "" + set page_title "#eduwiki.IndexPage#" + set index_link [$context_package_id make_link -privilege public -link "" $context_package_id {} {}] + set activity_pages_p 0 + if {[ns_queryexists eduwiki_id]} { + set title "#eduwiki.activity_index#" + set eduwiki_id [ns_queryget eduwiki_id] + set activity_pages_p 1 + } + } + } + } + + lappend variables page_title activity_pages_p + + if {[exists_and_not_null form]} { + upvar form [set form] + } else { + set form "" + } + + return [next -adp $adp -variables $variables -form $form] + } + + # instproc create_new_snippet + Package instproc create_new_snippet { + {-object_type ::xowiki::Page} + provided_name + } { + #disable create_new_snippet + return "" + } + + # New class to store eduwiki_task_information + + ::xo::db::CrClass create EduwikiTask -superclass ::xo::db::CrItem \ + -pretty_name "Eduwiki Task" -pretty_plural "Eduwiki Tasks" \ + -table_name "eduwiki_tasks" -id_column "eduwiki_id" \ + -slots { + ::xo::db::CrAttribute create release_date \ + -datatype date \ + -sqltype timestamp + ::xo::db::CrAttribute create close_date \ + -datatype date \ + -sqltype timestamp + ::xo::Attribute create name \ + -required true + ::xo::db::CrAttribute create eduwiki_category \ + -datatype text \ + -sqltype varchar(15) + ::xo::db::CrAttribute create eduwiki_visible_all_p \ + -datatype text \ + -sqltype char(1) \ + -default "t" + ::xo::db::CrAttribute create eduwiki_editable_all_p \ + -datatype text \ + -sqltype char(1) \ + -default "t" + ::xo::db::CrAttribute create eduwiki_create_all_p \ + -datatype text \ + -sqltype char(1) \ + -default "t" + ::xo::db::CrAttribute create eduwiki_evaluation_related_p \ + -datatype text \ + -sqltype char(1) \ + -default "t" + } + + # create various extra tables, indices and views + + ::xo::db::require table eduwiki_groups_map \ + "eduwiki_id integer references cr_items(item_id) on delete cascade, + party_id integer references parties(party_id), + constraint eduwiki_groups_map_pk primary key (eduwiki_id, party_id)" + + ::xo::db::require index -table eduwiki_groups_map -col eduwiki_id,party_id -unique true + + ::xo::db::require table eduwiki_pages_map \ + "eduwiki_id integer references cr_items(item_id) on delete cascade, + page_id integer references cr_items(item_id) on delete cascade, + party_id integer references parties(party_id), + index_p char(1) default 'f', + constraint eduwiki_pages_map_pk primary key (eduwiki_id, page_id, party_id), + constraint eduwiki_pages_map_indexp_ck check(index_p in ('t','f'))" + + ::xo::db::require index -table eduwiki_pages_map -col eduwiki_id,page_id + + # extend Link functionality + Class EduWikiLink + + EduWikiLink instproc render_not_found {href label} { + if {$href eq ""} { + return \[$label\] + } else { + return "$label" + } + } + + Class EduWikiPage + + EduWikiPage instproc new_link {-name -title -nls_language page_package_id} { + #check create permissions + set item_id [my item_id] + set base_url [$page_package_id package_url] + if {[permission::permission_p -object_id $item_id -privilege create]} { + return [export_vars -base "${base_url}eduwiki-page-new" {name title nls_language item_id}] + } else { + return "" + } + } + + # proc to hide delete revisions button + EduWikiPage instproc revisions {} { + my instvar package_id name title item_id + set context [list [list [$package_id url] $title ] [_ xotcl-core.revisions]] + set title "[_ eduwiki.revisions_history] '$title'" + ::xo::Page set_property doc title $title + + ::TableWidget t1 -volatile \ + -columns { + Field version_number -label "" -html {align right} + ImageAnchorField edit -label "" -src /resources/acs-subsite/Zoom16.gif \ + -title "[_ eduwiki.view_eduwiki_page]" -alt "view" \ + -width 16 -height 16 -border 0 + AnchorField diff -label "" + AnchorField author -label [_ file-storage.Author] + Field content_size -label [_ file-storage.Size] -html {align right} + Field last_modified_ansi -label [_ file-storage.Last_Modified] + Field description -label [_ file-storage.Version_Notes] + ImageAnchorField live_revision -label [_ eduwiki.live_version] \ + -src /resources/acs-subsite/radio.gif \ + -width 16 -height 16 -border 0 -html {align center} + } + + set user_id [my current_user_id] + set page_id [my set item_id] + set live_revision_id [::xo::db::sql::content_item get_live_revision -item_id $page_id] + my instvar package_id + set base [$package_id url] + set sql [::xo::db::sql select \ + -map_function_names true \ + -vars "ci.name, n.revision_id as version_id,\ + person__name(n.creation_user) as author, \ + n.creation_user as author_id, \ + to_char(n.last_modified,'YYYY-MM-DD HH24:MI:SS') as last_modified_ansi,\ + n.description,\ + acs_permission__permission_p(n.revision_id,:user_id,'admin') as admin_p,\ + acs_permission__permission_p(n.revision_id,:user_id,'delete') as delete_p,\ + r.content_length,\ + content_revision__get_number(n.revision_id) as version_number " \ + -from "cr_revisionsi n, cr_items ci, cr_revisions r" \ + -where "ci.item_id = n.item_id and ci.item_id = :page_id + and r.revision_id = n.revision_id + and exists (select 1 from acs_object_party_privilege_map m + where m.object_id = n.revision_id + and m.party_id = :user_id + and m.privilege = 'read')" \ + -orderby "n.revision_id desc"] + + db_foreach [my qn revisions_select] $sql { + if {$content_length < 1024} { + if {$content_length eq ""} {set content_length 0} + set content_size_pretty "[lc_numeric $content_length] [_ file-storage.bytes]" + } else { + set content_size_pretty "[lc_numeric [format %.2f [expr {$content_length/1024.0}]]] [_ file-storage.kb]" + } + + set last_modified_ansi [lc_time_system_to_conn $last_modified_ansi] + + if {$version_id != $live_revision_id} { + set live_revision "[_ eduwiki.make_as_current]" + set live_revision_icon /resources/acs-subsite/radio.gif + } else { + set live_revision "[_ eduwiki.view_current]" + set live_revision_icon /resources/acs-subsite/radiochecked.gif + } + + set live_revision_link [export_vars -base $base \ + {{m make-live-revision} {revision_id $version_id}}] + t1 add \ + -version_number $version_number: \ + -edit.href [export_vars -base $base {{revision_id $version_id}}] \ + -author $author \ + -content_size $content_size_pretty \ + -last_modified_ansi [lc_time_fmt $last_modified_ansi "%x %X"] \ + -description $description \ + -live_revision.src $live_revision_icon \ + -live_revision.title $live_revision \ + -live_revision.href $live_revision_link + + [t1 last_child] set payload(revision_id) $version_id + } + + # providing diff links to the prevision versions. This can't be done in + # the first loop, since we have not yet the revision id of entry in the next line. + set lines [t1 children] + for {set i 0} {$i < [llength $lines]-1} {incr i} { + set e [lindex $lines $i] + set n [lindex $lines [expr {$i+1}]] + set revision_id [$e set payload(revision_id)] + set compare_revision_id [$n set payload(revision_id)] + $e set diff.href [export_vars -base $base {{m diff} compare_revision_id revision_id}] + $e set diff "diff" + } + set e [lindex $lines end] + if {$e ne ""} { + $e set diff.href "" + $e set diff "" + } + #set content [next] + set content [t1 asHTML] + + array set property_doc [::xo::Page get_property doc] + $package_id return_page -adp /packages/xowiki/www/revisions -variables { + content context {page_id $item_id} title property_doc + } + } + + # proc to hide delete revisions button + EduWikiPage instproc diff {} { + + my instvar package_id + + set compare_id [my query_parameter "compare_revision_id" 0] + if {$compare_id == 0} { + return "" + } + ::xo::Page requireCSS /resources/xowiki/xowiki.css + set my_page [::xowiki::Package instantiate_page_from_id -revision_id [my revision_id]] + $my_page volatile + + if {[catch {set html1 [$my_page render]} errorMsg]} { + set html2 "Error rendering [my revision_id]: $errorMsg" + } + set text1 [ad_html_text_convert -from text/html -to text/plain -- $html1] + set user1 [::xo::get_user_name [$my_page set creation_user]] + set time1 [$my_page set creation_date] + set revision_id1 [$my_page set revision_id] + regexp {^([^.]+)[.]} $time1 _ time1 + + set other_page [::xowiki::Package instantiate_page_from_id -revision_id $compare_id] + $other_page volatile + #$other_page absolute_links 1 + + if {[catch {set html2 [$other_page render]} errorMsg]} { + set html2 "Error rendering $compare_id: $errorMsg" + } + set text2 [ad_html_text_convert -from text/html -to text/plain -- $html2] + set user2 [::xo::get_user_name [$other_page set creation_user]] + set time2 [$other_page set creation_date] + set revision_id2 [$other_page set revision_id] + regexp {^([^.]+)[.]} $time2 _ time2 + + set page_title [my set title] + set title "[_ eduwiki.differences]" + set context [list [list [$package_id url] $title ] [_ eduwiki.diff]] + + # try util::html diff if it is available and works + if {[catch {set content [::util::html_diff -old $html2 -new $html1 -show_old_p t]}]} { + # otherwise, fall back to proven text based diff + set content [::xowiki::html_diff $text2 $text1] + } + + ::xo::Page set_property doc title $title + array set property_doc [::xo::Page get_property doc] + set header_stuff [::xo::Page header_stuff] + + $package_id return_page -adp /packages/eduwiki/www/diff -variables { + content title context header_stuff + time1 time2 user1 user2 revision_id1 revision_id2 property_doc + } + + } + + Class create EduWikiForm -superclass ::xowiki::WikiForm \ + -parameter { + {add_page_title [_ eduwiki.edit_eduwiki_page]} + {edit_page_title [_ eduwiki.edit_eduwiki_page]} + } + + Class create Policy -superclass ::xo::Policy + + Policy policy3 -contains { + # + # we require side wide admin rights for deletions + # we perform checking on item_ids for pages. + # + + Class Package -array set require_permission { + reindex {{id admin}} + rss none + refresh-login none + google-sitemap none + google-sitemapindex none + change-page-order {{id admin}} + manage-categories {{id admin}} + edit-category-tree {{id admin}} + delete swa + edit-new { + {{has_class ::xowiki::Object} swa} + {{has_class ::xowiki::FormPage} nobody} + {{has_name {[.](js|css)$}} swa} + {id create} + } + } + + Class Page -array set require_permission { + view {{item_id read}} + revisions {{item_id write}} + diff {{item_id write}} + edit {{item_id write}} + make-live-revision {{item_id write}} + delete-revision {{item_id admin}} + delete { + {item_id delete} + {item_id admin} + } + save-tags login + popular-tags login + create-new swa + create-or-use swa + } + + Class Object -array set require_permission { + edit swa + } + Class File -array set require_permission { + download {{package_id read}} + } + Class Form -array set require_permission { + create-new swa + create-or-use swa + list {{item_id read}} + } + } + + +} \ No newline at end of file Index: openacs-4/packages/eduwiki/www/diff.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/diff.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/diff.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,48 @@ + + @title;noquote@ + property_doc + @context;noquote@ + + @header_stuff;noquote@ + + + + + @header_stuff;noquote@ + + + + + +

#eduwiki.comparing#

+ +

+
+ +@content;noquote@ + Index: openacs-4/packages/eduwiki/www/eduwiki-page-new.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/eduwiki-page-new.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/eduwiki-page-new.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,70 @@ +# /packages/eduwiki/www/eduwiki-page-new.tcl + +ad_page_contract { + Automatically create a page related with page_item_id and eduwiki + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-08 +} { + {item_id 0} + {name ""} + {title ""} +} + +set package_id [ad_conn package_id] +set package_url [apm_package_url_from_id $package_id] + +# check create permissions +if { $item_id > 0} { + permission::require_permission -object_id $item_id -privilege create + + set data [eduwiki::create_page -page_title $title -page_name $name] + set eduwiki_page_id [lindex $data 0] + set page_name [lindex $data 1] + set link "${package_url}$page_name" + + #set page_permissions + set page_item_id $item_id + set eduwiki_id [eduwiki::get_eduwiki_task_id -page_item_id $page_item_id] + set eduwiki_task_id [content::item::get_live_revision -item_id $eduwiki_id] + db_1row get_instance_select [::eduwiki::EduwikiTask instance_select_query \ + -parent_id $package_id \ + -from_clause ", eduwiki_tasks e" \ + -select_attributes [list eduwiki_id \ + eduwiki_category \ + eduwiki_visible_all_p \ + eduwiki_editable_all_p \ + eduwiki_create_all_p \ + eduwiki_evaluation_related_p \ + "description as eduwiki_description" \ + "bt.title as eduwiki_title" \ + "name as eduwiki_name" \ + "to_char(release_date,'YYYY MM DD HH24 MI SS') as publish_date" \ + "to_char(close_date,'YYYY MM DD HH24 MI SS') as close_date"] \ + -where_clause "e.eduwiki_id = acs_objects.object_id and e.eduwiki_id = :eduwiki_task_id" \ + ] + #get eduwiki_party_id + set eduwiki_id $item_id + set eduwiki_party_id [eduwiki::get_eduwiki_party_id -eduwiki_id $eduwiki_id -page_item_id $page_item_id] + + if { ![empty_string_p $eduwiki_page_id] && ![empty_string_p $eduwiki_id] && ![empty_string_p $eduwiki_party_id] } { + db_dml insert_eduwiki_pages_map { *SQL* } + eduwiki::set_eduwiki_permissions -eduwiki_page_id $eduwiki_page_id \ + -party_id $eduwiki_party_id \ + -eduwiki_category $eduwiki_category \ + -eduwiki_visible_all_p $eduwiki_visible_all_p \ + -eduwiki_editable_all_p $eduwiki_editable_all_p \ + -eduwiki_create_all_p $eduwiki_create_all_p \ + -eduwiki_index_p "f" + + #set delete permissions to creator + permission::grant -object_id $eduwiki_page_id -party_id [ad_conn user_id] -privilege delete + } + + + ad_returnredirect [export_vars -base $link {{m edit} {title ""}}] + +} else { + ad_return_complaint 1 "[_ eduwiki.new_page_needs_eduwiki_task]" + ad_script_abort +} + Index: openacs-4/packages/eduwiki/www/eduwiki-page-new.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/eduwiki-page-new.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/eduwiki-page-new.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,12 @@ + + + + + + insert into eduwiki_pages_map + (eduwiki_id, page_id, party_id, index_p) + values + (:eduwiki_id, :eduwiki_page_id, :eduwiki_party_id, 'f') + + + Index: openacs-4/packages/eduwiki/www/eduwiki-view.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/eduwiki-view.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/eduwiki-view.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,39 @@ + + @title;noquote@ + @context;noquote@ + @item_id@ + property_body + property_doc +

+ + +
+ +

@title@ (@page_context@)

+

@title@

+ + + +
+ @content;noquote@ +
+ +@footer;noquote@ +
Index: openacs-4/packages/eduwiki/www/index.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/index.vuh,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/index.vuh 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,16 @@ +::eduwiki::Package initialize -ad_doc { + + This is the resolver for this package. It turns a request into + an object and executes the object with the computed method + + @author Gustaf Neumann (gustaf.neumann@wu-wien.ac.at) + @creation-date July, 2006 + @cvs-id $Id: index.vuh,v 1.1 2009/10/07 19:11:52 hramado Exp $ + +} -parameter { + {-m view} + {-folder_id:integer 0} +} + +::$package_id reply_to_user [::$package_id invoke -method $m] +ad_script_abort Index: openacs-4/packages/eduwiki/www/admin/delete.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/delete.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/delete.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,18 @@ +::eduwiki::Package initialize -ad_doc { + + Delete an EduwikiTask + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-10 + @cvs-id $Id: delete.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ + + @param eduwiki_id The eduwiki_id of the Task to delete +} -parameter { + {-item_id:integer} +} + +permission::require_write_permission -object_id $item_id +::xo::db::CrItem delete -item_id $item_id + +ad_returnredirect "eduwiki-index" + Index: openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1 @@ +#eduwiki.Group_task_added# Index: openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,63 @@ +# /packages/eduwiki/www/admin/eduwiki-add-group.tcl + +ad_page_contract { + Page to add groups to eduwiki task + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-13 + @cvs-id $Id: eduwiki-add-group.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + {group_id_list ""} + eduwiki_id:integer,notnull +} + +set community_id [dotlrn_community::get_community_id] +set package_id [ad_conn package_id] + +# get EduwikiTask info +set eduwiki_task_id [content::item::get_live_revision -item_id $eduwiki_id] +db_1row get_instance_select [::eduwiki::EduwikiTask instance_select_query \ + -parent_id $package_id \ + -from_clause ", eduwiki_tasks e" \ + -select_attributes [list eduwiki_id \ + eduwiki_category \ + eduwiki_visible_all_p \ + eduwiki_editable_all_p \ + eduwiki_create_all_p \ + eduwiki_evaluation_related_p \ + "description as eduwiki_description" \ + "bt.title as eduwiki_title" \ + "name as eduwiki_name" \ + "to_char(release_date,'YYYY MM DD HH24 MI SS') as publish_date" \ + "to_char(close_date,'YYYY MM DD HH24 MI SS') as close_date"] \ + -where_clause "e.eduwiki_id = acs_objects.object_id and e.eduwiki_id = :eduwiki_task_id" \ + ] + +# save group page +set group_id_list [string trim $group_id_list] +if { [llength $group_id_list] > 0 } { + db_transaction { + foreach eduwiki_group_id $group_id_list { + set group_name [group::get_element -group_id $eduwiki_group_id -element "group_name"] + if {![empty_string_p $group_name]} { + db_dml insert_eduwiki_group_map { *SQL* } + set eduwiki_group_title "$eduwiki_title ($group_name)" + set eduwiki_page_data [eduwiki::create_page -page_title $eduwiki_group_title] + set eduwiki_page_id [lindex $eduwiki_page_data 0] + if { ![empty_string_p $eduwiki_page_id] && ![empty_string_p $item_id] } { + db_dml insert_eduwiki_pages_map { *SQL* } + eduwiki::set_eduwiki_permissions -eduwiki_page_id $eduwiki_page_id \ + -party_id $eduwiki_group_id \ + -eduwiki_category $eduwiki_category \ + -eduwiki_visible_all_p $eduwiki_visible_all_p \ + -eduwiki_editable_all_p $eduwiki_editable_all_p \ + -eduwiki_create_all_p $eduwiki_create_all_p \ + -eduwiki_index_p "t" + } + } + } + } +} + +ad_returnredirect [export_vars -base "groups-admin" {{eduwiki_id $item_id}}] +ad_script_abort Index: openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-add-group.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,22 @@ + + + + + + insert into eduwiki_groups_map + (eduwiki_id, party_id) + values + (:item_id, :eduwiki_group_id) + + + + + + insert into eduwiki_pages_map + (eduwiki_id, page_id, party_id, index_p) + values + (:item_id, :eduwiki_page_id, :eduwiki_group_id, 't') + + + + Index: openacs-4/packages/eduwiki/www/admin/eduwiki-index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-index.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-index.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,9 @@ + + @page_title;noquote@ + @context;noquote@ + +

#eduwiki.Eduwiki_tasklist_#

+#eduwiki.Add_eduwiki_# +
+@html;noquote@ + Index: openacs-4/packages/eduwiki/www/admin/eduwiki-index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-index.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-index.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,127 @@ +# /packages/eduwiki/www/admin/eduwiki-index.tcl + +::eduwiki::Package initialize -ad_doc { + This is the main page for the package. It displays all of the EduwikiTasks and provides links to create, edit and delete EduwikiTasks. + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-10 + @cvs-id $Id: eduwiki-index.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} -parameter { + {-orderby:optional "title,desc"} +} + +set page_title "[_ eduwiki.Eduwiki_tasklist_]" +set context [list] +# get limit_dates_p +set limit_dates_p [parameter::get -package_id $package_id \ + -parameter with_limit_dates \ + -default 0] + +# +# We define a table with an action to add new items +# + +TableWidget index -volatile \ + -set limit_dates_p $limit_dates_p \ + -actions "" \ + -columns { + ImageField_EditIcon edit -label "" -html {style "padding-right: 2px;"} + AnchorField title -label "[_ eduwiki.Eduwiki_Title_]" -orderby title + if { [[my info parent] set limit_dates_p] } { + Field release_date -label "[_ eduwiki.Release_Date]" -orderby release_date + Field close_date -label "[_ eduwiki.Close_Date]" -orderby close_date + } + AnchorField eduwiki_category -label "[_ eduwiki.Category]" -orderby eduwiki_category + AnchorField groups_admin -label "" + ImageField_ViewIcon view -label "" + ImageAnchorField publish_status -label "[_ eduwiki.enabled]" \ + -src /resources/acs-subsite/checkboxchecked.gif \ + -width 16 -height 16 -border 0 -html {align center} + } + +# +# to sort the items of the table, we take the values from the query parameter and +# use the orderby method of the table to achieve sorting. +# +foreach {att order} [split $orderby ,] break +index orderby -order [expr {$order eq "asc" ? "increasing" : "decreasing"}] $att + +# +# The query selects all Eduwiki Tasks from the Package specific folder. +# Per default the following attributes are retrieved: +# - item_id, name, publish_status, and object_type. +# + +db_foreach instance_select \ + [::eduwiki::EduwikiTask instance_select_query \ + -parent_id $package_id \ + -from_clause ", eduwiki_tasks e" \ + -select_attributes [list "object_id as eduwiki_id" publish_status title eduwiki_category creation_user \ + "to_char(release_date,'DD-MM-YYYY HH24:MI:SS') as release_date" \ + "to_char(close_date,'DD-MM-YYYY HH24:MI:SS') as close_date"]\ + -where_clause "e.eduwiki_id = acs_objects.object_id" \ + ] { + set groups_admin "" + set groups_adminhref "" + if { $eduwiki_category == "student" } { + set eduwiki_category "#eduwiki.Student_category#" + set groups_admin "[_ eduwiki.students_admin]" + set groups_adminhref [export_vars -base "eduwiki-list" {{eduwiki_id $item_id}}] + } + if { $eduwiki_category == "professor"} { + set eduwiki_category "#eduwiki.Teacher_category#" + } + if { $eduwiki_category == "group" } { + set groups_admin "[_ eduwiki.Group_Admin]" + set groups_adminhref [export_vars -base "groups-admin" {{eduwiki_id $item_id}}] + set eduwiki_category "#eduwiki.Group_category#" + } + + if { $publish_status == "ready" } { + set publish_status_icon "/resources/acs-subsite/checkboxchecked.gif" + set publish_status_link [export_vars -base set-publish-state {item_id {publish_status "production"}}] + set publish_title "#eduwiki.disabled#" + } else { + set publish_status_icon "/resources/acs-subsite/checkbox.gif" + set publish_status_link [export_vars -base set-publish-state {item_id {publish_status "ready"}}] + set publish_title "#eduwiki.enabled#" + } + + if { $limit_dates_p } { + index add \ + -title $title \ + -title.href [export_vars -base "../" {{eduwiki_id $item_id}}] \ + -release_date $release_date \ + -close_date $close_date \ + -eduwiki_category $eduwiki_category \ + -groups_admin $groups_admin \ + -groups_admin.href $groups_adminhref \ + -edit.href [export_vars -base eduwiki-new {eduwiki_id}] \ + -view.href [export_vars -base eduwiki-list {{eduwiki_id $item_id}}] \ + -publish_status.href $publish_status_link \ + -publish_status.title $publish_title \ + -publish_status.src $publish_status_icon + } else { + index add \ + -title $title \ + -title.href [export_vars -base "../" {{eduwiki_id $item_id}}] \ + -eduwiki_category $eduwiki_category \ + -groups_admin $groups_admin \ + -groups_admin.href $groups_adminhref \ + -edit.href [export_vars -base eduwiki-new {eduwiki_id}] \ + -view.href [export_vars -base eduwiki-list {{eduwiki_id $item_id}}] \ + -publish_status.href $publish_status_link \ + -publish_status.title $publish_title \ + -publish_status.src $publish_status_icon + } + + } + + + if { [llength [$index children]] } { + set html [index asHTML] + } else { + set html "[_ eduwiki.There_are_not_eduwiki_activities]" + } + + Index: openacs-4/packages/eduwiki/www/admin/eduwiki-list.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-list.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-list.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,15 @@ + + @page_title;noquote@ + @context;noquote@ + +#eduwiki.back# +
+

#eduwiki.Eduwiki_task_Pages#

+@html;noquote@ +
+ + +

#eduwiki.Eduwiki_students_not_in_task#

+ @html2;noquote@ +
+
Index: openacs-4/packages/eduwiki/www/admin/eduwiki-list.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-list.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-list.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,116 @@ +# /packages/eduwiki/www/admin/eduwiki-list.tcl + +::eduwiki::Package initialize -ad_doc { + This is the main page for eduwiki pages lists.. It displays all of the EduwikiTasks Pages and provides links to acces, edit and delete Pages. + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-14 + @cvs-id $Id: eduwiki-list.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} -parameter { + {-eduwiki_id:integer,required} + {-orderby:optional "title,desc"} +} + +set page_title "[_ eduwiki.Eduwiki_pageslist_]" +set context [list] +set community_id [dotlrn_community::get_community_id] + +# get eduwiki_category +set eduwiki_category "professor" +if {[exists_and_not_null eduwiki_id] && [::xo::db::Class exists_in_db -id $eduwiki_id]} { + set eduwiki_item_id [::eduwiki::EduwikiTask get_instance_from_db -item_id $eduwiki_id] + set eduwiki_category [$eduwiki_item_id set eduwiki_category] +} + +# +# We define a table +# + +TableWidget index -volatile \ + -actions "" \ + -columns { + AnchorField title -label "[_ eduwiki.Page_Title_]" -orderby title + Field creator -label "[_ eduwiki.Eduwiki_creator_]" + ImageField_EditIcon edit -label "" -html {style "padding-right: 2px;"} + ImageAnchorField publish_status -label "[_ eduwiki.enabled]" \ + -src /resources/acs-subsite/checkboxchecked.gif \ + -width 16 -height 16 -border 0 -html {align center} + } + +# +# to sort the items of the table, we take the values from the query parameter and +# use the orderby method of the table to achieve sorting. +# +foreach {att order} [split $orderby ,] break +index orderby -order [expr {$order eq "asc" ? "increasing" : "decreasing"}] $att + +# +# The query selects all Eduwiki Pages from the Package specific folder. +# Per default the following attributes are retrieved: +# - item_id, name, publish_status, and object_type. +# +set folder_id [$package_id folder_id] + +db_foreach instance_select \ + [::xowiki::Page instance_select_query \ + -parent_id $folder_id \ + -from_clause ", eduwiki_pages_map e" \ + -select_attributes [list "bt.revision_id as page_id" publish_status title creation_user "e.party_id as creator_id"]\ + -where_clause "e.page_id = ci.item_id and e.eduwiki_id = :eduwiki_id and e.index_p = 't'" \ + ] { + + set page_url "../$name" + if {![empty_string_p $creator_id] } { + set creator [eduwiki::get_party_name -party_id $creator_id] + } else { + set creator "" + } + + if { $publish_status == "ready" } { + set publish_status_icon "/resources/acs-subsite/checkboxchecked.gif" + set publish_status_link [export_vars -base set-item-publish-state {item_id eduwiki_id {publish_status "production"}}] + set publish_title "#eduwiki.disabled#" + } else { + set publish_status_icon "/resources/acs-subsite/checkbox.gif" + set publish_status_link [export_vars -base set-item-publish-state {item_id eduwiki_id {publish_status "ready"}}] + set publish_title "#eduwiki.enabled#" + } + + index add \ + -title $title \ + -title.href [export_vars -base $page_url {{m view}}] \ + -creator $creator \ + -edit.href [export_vars -base $page_url {{m edit}}] \ + -publish_status.href $publish_status_link \ + -publish_status.title $publish_title \ + -publish_status.src $publish_status_icon + } + + +set html [index asHTML] + +# get students not in activity + +TableWidget index2 -volatile \ + -actions "" \ + -columns { + Field creator -label "[_ eduwiki.Eduwiki_student_]" + ImageAnchorField add -label "[_ eduwiki.student_add_to_eduwiki]" \ + -src /resources/acs-subsite/Add16.gif \ + -width 16 -height 16 -border 0 -html {align center} + } + +if {$eduwiki_category == "student"} { + db_foreach get_students_not_in_activity { *SQL* } { + index2 add \ + -creator $student_name \ + -add.title "[_ eduwiki.student_add_to_eduwiki]" \ + -add.href [export_vars -base "member-task-add" {student_id eduwiki_id}] + } + + if { [llength [$index2 children]] } { + set html2 [index2 asHTML] + } else { + set html2 "" + } +} Index: openacs-4/packages/eduwiki/www/admin/eduwiki-list.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-list.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-list.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,26 @@ + + + + + + select + p.last_name ||', '|| p.first_names as student_name, + p.person_id as student_id + from + persons p, + dotlrn_member_rels_approved app + where + app.community_id = :community_id + and app.user_id = p.person_id + and app.role = 'student' + and p.person_id not in (select party_id + from eduwiki_pages_map + where eduwiki_id = :eduwiki_id + and index_p = 't' ) + order by p.last_name asc + + + + + + Index: openacs-4/packages/eduwiki/www/admin/eduwiki-new.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-new.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-new.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,5 @@ + + @page_title;noquote@ + @context;noquote@ + + \ No newline at end of file Index: openacs-4/packages/eduwiki/www/admin/eduwiki-new.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-new.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-new.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,342 @@ +# /packages/eduwiki/www/admin/eduwiki-new.tcl + +ad_page_contract { + Page to add or edit new eduwiki + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-07 + @cvs-id $Id: eduwiki-new.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + eduwiki_id:integer,notnull,optional + {mode "edit"} +} + +set new_p [ad_form_new_p -key eduwiki_id] +set form_format "DD MM YYYY HH24 MI" +set package_id [ad_conn package_id] +set community_id [dotlrn_community::get_community_id] + +if { $new_p } { + set page_title "[_ eduwiki.Add_eduwiki_]" +} else { + set page_title "[_ eduwiki.Edit_eduwiki_]" +} +set context [list $page_title] + +set groups_ids "" +set eduwiki_groups "" +# get limit_dates_p +set limit_dates_p [parameter::get -package_id $package_id \ + -parameter with_limit_dates \ + -default 0] + +ad_form -name eduwiki -mode $mode -cancel_url "eduwiki-index" -form { + + eduwiki_id:key + + {eduwiki_title:text + {label "[_ eduwiki.Eduwiki_Title_]"} + {html {size 40}} + } + {eduwiki_description:richtext(richtext),optional,nospell + {label "[_ eduwiki.Eduwiki_Descripti]"} + {html {rows 8 cols 50}} + } + +} + +if { $new_p } { + + ad_form -extend -name eduwiki -form { + {eduwiki_category:text + {label "[_ eduwiki.Wiki_type]"} + {widget select} + {options {{"[_ eduwiki.Teacher_category]" professor} {"[_ eduwiki.Group_category]" group} {"[_ eduwiki.Student_category]" student}}} + {value "professor"} + } + } + +} else { + + ad_form -extend -name eduwiki -form { + {eduwiki_category:text + {label "[_ eduwiki.Wiki_type]"} + {widget select} + {mode "display"} + {options {{"[_ eduwiki.Teacher_category]" professor} {"[_ eduwiki.Group_category]" group} {"[_ eduwiki.Student_category]" student}}} + {value "professor"} + } + } + +} + +ad_form -extend -name eduwiki -form { + + {eduwiki_visible_all_p:text(radio) + {label "[_ eduwiki.lt_Will_be_visible_by_all]"} + {options {{"[_ eduwiki.Yes_]" t} {"[_ eduwiki.No_]" f}}} + {value t} + } + {eduwiki_editable_all_p:text(radio) + {label "[_ eduwiki.lt_Will_be_editable_by_all]"} + {options {{"[_ eduwiki.Yes_]" t} {"[_ eduwiki.No_]" f}}} + {value f} + {help_text "[_ eduwiki.help_editable_by_all]"} + } + {eduwiki_create_all_p:text(radio) + {label "[_ eduwiki.lt_student_Will_create_]"} + {options {{"[_ eduwiki.Yes_]" t} {"[_ eduwiki.No_]" f}}} + {value f} + } + +} + +if { $limit_dates_p } { + + ad_form -extend -name eduwiki -form { + + {publish_date:date,optional + {label "[_ eduwiki.Release_Date]"} + {format $form_format} + {value ""} + {help} + {help_text "[_ eduwiki.help_publish_date]"} + } + {close_date:date,optional + {label "[_ eduwiki.Close_Date]"} + {format $form_format} + {value ""} + {help} + {help_text "[_ eduwiki.help_close_date]"} + } + } + +} else { + + ad_form -extend -name eduwiki -form { + + {publish_date:date(hidden),optional + {label "[_ eduwiki.Release_Date]"} + {format $form_format} + {value ""} + {help} + {help_text "[_ eduwiki.help_publish_date]"} + } + {close_date:date(hidden),optional + {label "[_ eduwiki.Close_Date]"} + {format $form_format} + {value ""} + {help} + {help_text "[_ eduwiki.help_close_date]"} + } + } + +} + +ad_form -extend -name eduwiki -form { + + {eduwiki_evaluation_related_p:text(hidden) + {label "[_ eduwiki.lt_Will_this_task_requir]"} + {options {{"[_ eduwiki.Yes_]" t} {"[_ eduwiki.No_]" f}}} + {value f} + } +} -edit_request { + + #Get eduwiki task info + db_1row get_instance_select [::eduwiki::EduwikiTask instance_select_query \ + -parent_id $package_id \ + -from_clause ", eduwiki_tasks e" \ + -select_attributes [list eduwiki_id \ + eduwiki_category \ + creation_user \ + eduwiki_visible_all_p \ + eduwiki_editable_all_p \ + eduwiki_create_all_p \ + eduwiki_evaluation_related_p \ + "description as eduwiki_description" \ + "bt.title as eduwiki_title" \ + "name as eduwiki_name" \ + "to_char(release_date,'YYYY MM DD HH24 MI SS') as publish_date" \ + "to_char(close_date,'YYYY MM DD HH24 MI SS') as close_date"] \ + -where_clause "e.eduwiki_id = acs_objects.object_id and e.eduwiki_id = :eduwiki_id" \ + ] + +} -validate { + {publish_date + { [empty_string_p $publish_date] || ([template::util::date::compare $publish_date [template::util::date::now]] > 0) } + {[_ eduwiki.publish_date_must_Be_after_now]} + } + {close_date + { [empty_string_p $close_date] || ([template::util::date::compare $close_date [template::util::date::now]] > 0) } + {[_ eduwiki.close_date_must_Be_after_now]} + } + {close_date + { [empty_string_p $close_date] || (![empty_string_p $publish_date] && ([template::util::date::compare $close_date $publish_date] > 0)) } + {[_ eduwiki.close_date_must_Be_after_publish]} + } + {eduwiki_editable_all_p + { !$eduwiki_editable_all_p || $eduwiki_visible_all_p } + {[_ eduwiki.visible_must_be_true_to_edit]} + } +} -on_submit { + + if { ![empty_string_p $publish_date] } { + set publish_date [db_string get_publish_date "select to_timestamp('[template::util::date::get_property linear_date $publish_date]','YYYY MM DD HH24 MI SS')" -default ""] + } + if { ![empty_string_p $close_date] } { + set close_date [db_string get_close_date "select to_timestamp('[template::util::date::get_property linear_date $close_date]','YYYY MM DD HH24 MI SS')" -default ""] + } + + if { [ad_form_new_p -key eduwiki_id] && ![::xo::db::Class exists_in_db -id $eduwiki_id] } { + #new eduwiki_task + set data_id [::eduwiki::EduwikiTask create $eduwiki_id] + $data_id set name task_$eduwiki_id + $data_id set title $eduwiki_title + $data_id set description $eduwiki_description + $data_id set release_date $publish_date + $data_id set close_date $close_date + $data_id set eduwiki_category $eduwiki_category + $data_id set eduwiki_visible_all_p $eduwiki_visible_all_p + $data_id set eduwiki_editable_all_p $eduwiki_editable_all_p + $data_id set eduwiki_create_all_p $eduwiki_create_all_p + $data_id set eduwiki_evaluation_related_p $eduwiki_evaluation_related_p + $data_id set parent_id $package_id + $data_id initialize_loaded_object + $data_id save_new + + set data_item_id [$data_id set item_id] + + #mapping groups + if { [llength $eduwiki_groups] > 0 } { + if {![empty_string_p $data_item_id]} { + foreach group_id $eduwiki_groups { + db_dml insert_eduwiki_group_map { *SQL* } + } + } + } + + # creating eduwiki pages + # eduwiki_category + if { $eduwiki_category == "professor" } { + set eduwiki_data [eduwiki::create_page -page_title $eduwiki_title] + set eduwiki_page_id [lindex $eduwiki_data 0] + if {![empty_string_p $eduwiki_page_id]} { + set eduwiki_party_id [ad_conn user_id] + db_dml insert_eduwiki_pages_map { *SQL* } + eduwiki::set_eduwiki_permissions -eduwiki_page_id $eduwiki_page_id \ + -eduwiki_category $eduwiki_category \ + -eduwiki_visible_all_p $eduwiki_visible_all_p \ + -eduwiki_editable_all_p $eduwiki_editable_all_p \ + -eduwiki_create_all_p $eduwiki_create_all_p \ + -eduwiki_index_p "t" + } + } + + # groups_category + if { $eduwiki_category == "group" } { + if { [llength $eduwiki_groups] > 0 } { + foreach eduwiki_group_id $eduwiki_groups { + set group_name [group::get_element -group_id $eduwiki_group_id -element "group_name"] + set eduwiki_group_title "$eduwiki_title ($group_name)" + set eduwiki_page_data [eduwiki::create_page -page_title $eduwiki_group_title] + set eduwiki_page_id [lindex $eduwiki_page_data 0] + if { ![empty_string_p $eduwiki_page_id] && ![empty_string_p $data_item_id] } { + set eduwiki_party_id $eduwiki_group_id + db_dml insert_eduwiki_pages_map { *SQL* } + eduwiki::set_eduwiki_permissions -eduwiki_page_id $eduwiki_page_id \ + -party_id $eduwiki_group_id \ + -eduwiki_category $eduwiki_category \ + -eduwiki_visible_all_p $eduwiki_visible_all_p \ + -eduwiki_editable_all_p $eduwiki_editable_all_p \ + -eduwiki_create_all_p $eduwiki_create_all_p \ + -eduwiki_index_p "t" + } + } + } + + # redirect to group administration + ad_returnredirect [export_vars -base "groups-admin" {{eduwiki_id $data_item_id}}] + ad_script_abort + + } + + if { $eduwiki_category == "student" } { + db_foreach select_current_members { *SQL* } { + set eduwiki_page_data [eduwiki::create_page -page_title $eduwiki_title] + set eduwiki_page_id [lindex $eduwiki_page_data 0] + if { ![empty_string_p $eduwiki_page_id] && ![empty_string_p $data_item_id] } { + set eduwiki_party_id $party_id + db_dml insert_eduwiki_pages_map { *SQL* } + eduwiki::set_eduwiki_permissions -eduwiki_page_id $eduwiki_page_id \ + -party_id $eduwiki_party_id \ + -eduwiki_category $eduwiki_category \ + -eduwiki_visible_all_p $eduwiki_visible_all_p \ + -eduwiki_editable_all_p $eduwiki_editable_all_p \ + -eduwiki_create_all_p $eduwiki_create_all_p \ + -eduwiki_index_p "t" + } + } + } + + + } else { + # edit eduwiki_task + if { [::xo::db::Class exists_in_db -id $eduwiki_id] } { + set data_id [::xo::db::CrClass get_instance_from_db -revision_id $eduwiki_id] + $data_id set title $eduwiki_title + $data_id set description $eduwiki_description + $data_id set release_date $publish_date + $data_id set close_date $close_date + $data_id set eduwiki_visible_all_p $eduwiki_visible_all_p + $data_id set eduwiki_editable_all_p $eduwiki_editable_all_p + $data_id set eduwiki_create_all_p $eduwiki_create_all_p + $data_id set eduwiki_evaluation_related_p $eduwiki_evaluation_related_p + $data_id set parent_id $package_id + $data_id initialize_loaded_object + $data_id save + set data_item_id [$data_id set item_id] + + # update eduwiki permissions + # get pages and set permissions + if { ![empty_string_p $data_item_id] } { + db_foreach get_eduwiki_pages { *SQL* } { + eduwiki::set_eduwiki_permissions -eduwiki_page_id $eduwiki_page_id \ + -party_id $eduwiki_party_id \ + -eduwiki_category $eduwiki_category \ + -eduwiki_visible_all_p $eduwiki_visible_all_p \ + -eduwiki_editable_all_p $eduwiki_editable_all_p \ + -eduwiki_create_all_p $eduwiki_create_all_p \ + -eduwiki_index_p $page_index_p + + if {[permission::cache_p]} { + #clean cache for eduwiki_page_id + set pattern $eduwiki_page_id + set cached_names [ns_cache names util_memoize] + foreach name $cached_names { + if {[regexp -nocase -- $pattern $name match]} { + ns_cache flush util_memoize $name + } + } + } + } + } + + + if { $eduwiki_category == "group" } { + #update group pages permissions + + # redirect to group administration + ad_returnredirect [export_vars -base "groups-admin" {{eduwiki_id $data_item_id}}] + ad_script_abort + } + + } + } + +} -after_submit { + ad_returnredirect "eduwiki-index" + ad_script_abort +} + + +ad_return_template Index: openacs-4/packages/eduwiki/www/admin/eduwiki-new.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-new.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-new.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,75 @@ + + + + + + select + g.group_name, + g.group_id + from + groups g, + acs_objects ao + where + g.group_id = ao.object_id + and + ao.context_id = :package_id + + + + + + select + g.group_name, + g.group_id + from + groups g, + acs_objects ao + where + g.group_id = ao.object_id + and + ao.context_id = :package_id + + + + + + insert into eduwiki_groups_map + (eduwiki_id, party_id) + values + (:data_item_id, :group_id) + + + + + + insert into eduwiki_pages_map + (eduwiki_id, page_id, party_id, index_p) + values + (:data_item_id, :eduwiki_page_id, :eduwiki_party_id, 't') + + + + + + select dmra.user_id as party_id, + p.first_names, + p.last_name + from dotlrn_member_rels_approved dmra, + persons p + where dmra.community_id = :community_id + and dmra.user_id = p.person_id + and dmra.rel_type = 'dotlrn_student_rel' + + + + + + select page_id as eduwiki_page_id, + party_id as eduwiki_party_id, + index_p as page_index_p + from eduwiki_pages_map + where eduwiki_id = :data_item_id + + + + Index: openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1 @@ +#eduwiki.Group_member_removed# Index: openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,37 @@ +# /packages/eduwiki/www/admin/eduwiki-remove-group.tcl + +ad_page_contract { + Page to remove groups from tasks + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-13 + @cvs-id $Id: eduwiki-remove-group.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + {group_id_list ""} + eduwiki_id:integer,notnull +} + +set community_id [dotlrn_community::get_community_id] +set package_id [ad_conn package_id] + +# save group page +set group_id_list [string trim $group_id_list] +if { [llength $group_id_list] > 0 } { + db_transaction { + foreach eduwiki_group_id $group_id_list { + #remove_groups + db_dml delete_eduwiki_group_map { *SQL* } + + db_foreach select_eduwiki_pages_map { *SQL* } { + #foreach page + #delete xowiki pages + } + + #remove_pages + db_dml delete_eduwiki_pages_map { *SQL* } + } + } +} + +ad_returnredirect [export_vars -base "groups-admin" {eduwiki_id}] +ad_script_abort Index: openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/eduwiki-remove-group.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,28 @@ + + + + + + delete from eduwiki_groups_map + where party_id = :eduwiki_group_id + and eduwiki_id = :eduwiki_id + + + + + + delete from eduwiki_pages_map + where party_id = :eduwiki_group_id + and eduwiki_id = :eduwiki_id + + + + + + select page_id from eduwiki_pages_map + where party_id = :eduwiki_group_id + and eduwiki_id = :eduwiki_id + + + + Index: openacs-4/packages/eduwiki/www/admin/group-add-2.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-add-2.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-add-2.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,5 @@ + + #eduwiki.Group_created# @group_name@ + + #eduwiki.Group_creation_error# + \ No newline at end of file Index: openacs-4/packages/eduwiki/www/admin/group-add-2.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-add-2.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-add-2.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,68 @@ +# /packages/eduwiki/www/admin/group-add-2.tcl + +ad_page_contract { + Page to add groups + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-03 + @cvs-id $Id: group-add-2.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + eduwiki_id:integer,notnull + {group_name ""} +} + +set community_id [dotlrn_community::get_community_id] +set package_id [ad_conn package_id] +set group_id "" + +# get EduwikiTask info +set eduwiki_task_id [content::item::get_live_revision -item_id $eduwiki_id] +db_1row get_instance_select [::eduwiki::EduwikiTask instance_select_query \ + -parent_id $package_id \ + -from_clause ", eduwiki_tasks e" \ + -select_attributes [list eduwiki_id \ + eduwiki_category \ + eduwiki_visible_all_p \ + eduwiki_editable_all_p \ + eduwiki_create_all_p \ + eduwiki_evaluation_related_p \ + "description as eduwiki_description" \ + "bt.title as eduwiki_title" \ + "name as eduwiki_name" \ + "to_char(release_date,'YYYY MM DD HH24 MI SS') as publish_date" \ + "to_char(close_date,'YYYY MM DD HH24 MI SS') as close_date"] \ + -where_clause "e.eduwiki_id = acs_objects.object_id and e.eduwiki_id = :eduwiki_task_id" \ + ] + + + +if { ![empty_string_p $group_name] } { + db_transaction { + set group_id [group::new -group_name $group_name -context_id $package_id] + #add to eduwiki_id + if {![empty_string_p $group_id]} { + set eduwiki_group_id $group_id + set group_name [group::get_element -group_id $eduwiki_group_id -element "group_name"] + if {![empty_string_p $group_name]} { + db_dml insert_eduwiki_group_map { *SQL* } + set eduwiki_group_title "$eduwiki_title ($group_name)" + set eduwiki_page_data [eduwiki::create_page -page_title $eduwiki_group_title] + set eduwiki_page_id [lindex $eduwiki_page_data 0] + if { ![empty_string_p $eduwiki_page_id] && ![empty_string_p $item_id] } { + db_dml insert_eduwiki_pages_map { *SQL* } + eduwiki::set_eduwiki_permissions -eduwiki_page_id $eduwiki_page_id \ + -party_id $eduwiki_group_id \ + -eduwiki_category $eduwiki_category \ + -eduwiki_visible_all_p $eduwiki_visible_all_p \ + -eduwiki_editable_all_p $eduwiki_editable_all_p \ + -eduwiki_create_all_p $eduwiki_create_all_p \ + -eduwiki_index_p "t" + } + } + } + + } +} + +ad_returnredirect [export_vars -base "groups-admin" {{eduwiki_id $item_id} {group_ids $group_id}}] +ad_script_abort Index: openacs-4/packages/eduwiki/www/admin/group-add-2.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-add-2.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-add-2.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,22 @@ + + + + + + insert into eduwiki_groups_map + (eduwiki_id, party_id) + values + (:item_id, :eduwiki_group_id) + + + + + + insert into eduwiki_pages_map + (eduwiki_id, page_id, party_id, index_p) + values + (:item_id, :eduwiki_page_id, :eduwiki_group_id, 't') + + + + Index: openacs-4/packages/eduwiki/www/admin/group-add-member.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-add-member.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-add-member.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1 @@ +#eduwiki.Group_member_added# Index: openacs-4/packages/eduwiki/www/admin/group-add-member.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-add-member.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-add-member.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,43 @@ +# /packages/eduwiki/www/admin/group-add-member.tcl + +ad_page_contract { + Page to add members to group + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-04 + @cvs-id $Id: group-add-member.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + {selected_members_list ""} + group_id:integer,notnull + eduwiki_id:integer,notnull +} + +set community_id [dotlrn_community::get_community_id] +set package_id [ad_conn package_id] + +set selected_members_list [string trim $selected_members_list] +if { [llength $selected_members_list] } { + db_transaction { + foreach user_id $selected_members_list { + group::add_member -no_perm_check -group_id $group_id -user_id $user_id + } + } +} + +db_foreach select_group_pages { *SQL* } { + # page_item_id + # clean cache for groups item_id + + if {[permission::cache_p]} { + set pattern $page_item_id + set cached_names [ns_cache names util_memoize] + foreach name $cached_names { + if {[regexp -nocase -- $pattern $name match]} { + ns_cache flush util_memoize $name + } + } + } +} + +ad_returnredirect [export_vars -base "groups-admin" {eduwiki_id {group_ids $group_id}}] +ad_script_abort Index: openacs-4/packages/eduwiki/www/admin/group-add-member.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-add-member.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-add-member.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,11 @@ + + + + + + select page_id as page_item_id + from eduwiki_pages_map + where party_id = :group_id + + + Index: openacs-4/packages/eduwiki/www/admin/group-delete.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-delete.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-delete.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,43 @@ +# /packages/eduwiki/www/admin/group-add-2.tcl + +ad_page_contract { + Page to add groups + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-03 + @cvs-id $Id: group-delete.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + eduwiki_id:integer,notnull + group_id:integer,notnull + {confirm_p "f"} +} + +set community_id [dotlrn_community::get_community_id] +set package_id [ad_conn package_id] + +set count_eduwiki_pages [db_string get_count_eduwiki_pages { *SQL* } -default 0] +set count_eduwiki_groups [db_string get_count_eduwiki_groups { *SQL* } -default 0] +if { ![empty_string_p $group_id] } { + + db_transaction { + # delete from table, set cr_item publish_status to production + # set object_type [group::delete $group_id] + #remove_groups + db_dml delete_eduwiki_group_map { *SQL* } + + db_foreach select_eduwiki_pages_map { *SQL* } { + #foreach page set publish_status + db_dml update_pages_publish_state { *SQL* } + } + + #remove pages relation + db_dml delete_eduwiki_pages_map { *SQL* } + + } on_error { + ns_log notice "There was an error deleting group_id $group_id" + } + +} + +ad_returnredirect [export_vars -base "groups-admin" {eduwiki_id}] +ad_script_abort Index: openacs-4/packages/eduwiki/www/admin/group-delete.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-delete.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-delete.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,52 @@ + + + + + + select count(*) + from eduwiki_pages_map + where party_id = :group_id + + + + + + select count(*) + from eduwiki_groups_map + where party_id = :group_id + + + + + + delete from eduwiki_groups_map + where party_id = :group_id + and eduwiki_id = :eduwiki_id + + + + + + delete from eduwiki_pages_map + where party_id = :group_id + and eduwiki_id = :eduwiki_id + + + + + + select page_id from eduwiki_pages_map + where party_id = :group_id + and eduwiki_id = :eduwiki_id + + + + + + update cr_items + set publish_status = 'production' + where item_id = :page_id + + + + Index: openacs-4/packages/eduwiki/www/admin/group-remove-member.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-remove-member.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-remove-member.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1 @@ +#eduwiki.Group_member_removed# Index: openacs-4/packages/eduwiki/www/admin/group-remove-member.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-remove-member.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-remove-member.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,44 @@ +# /packages/eduwiki/www/admin/group-remove-member.tcl + +ad_page_contract { + Page to remove members from group + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-09 + @cvs-id $Id: group-remove-member.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + {selected_members_list ""} + group_id:integer,notnull + eduwiki_id:integer,notnull +} + +set community_id [dotlrn_community::get_community_id] +set package_id [ad_conn package_id] + +set selected_members_list [string trim $selected_members_list] +if { [llength $selected_members_list] } { + db_transaction { + foreach user_id $selected_members_list { + group::remove_member -group_id $group_id -user_id $user_id + db_dml remove_from_approved_member_map { delete from party_approved_member_map where member_id = :user_id and party_id = :group_id } + } + } +} + +db_foreach select_group_pages { *SQL* } { + # page_item_id + # clean cache for groups item_id + + if {[permission::cache_p]} { + set pattern $page_item_id + set cached_names [ns_cache names util_memoize] + foreach name $cached_names { + if {[regexp -nocase -- $pattern $name match]} { + ns_cache flush util_memoize $name + } + } + } +} + +ad_returnredirect [export_vars -base "groups-admin" {eduwiki_id {group_ids $group_id}}] +ad_script_abort Index: openacs-4/packages/eduwiki/www/admin/group-remove-member.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/group-remove-member.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/group-remove-member.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,11 @@ + + + + + + select page_id as page_item_id + from eduwiki_pages_map + where party_id = :group_id + + + Index: openacs-4/packages/eduwiki/www/admin/groups-admin.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/groups-admin.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/groups-admin.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,58 @@ + + @page_title;noquote@ + @context;noquote@ + +#eduwiki.back# +

#eduwiki.Group_Admin# : @eduwiki_title@

+
+ + +
+
+ + +

+#eduwiki.Add_Group_# + #eduwiki.Delete_group_# + +
+
+ +
+
+ +
+ +
+
+
+


+
+#eduwiki.Add_Member_#
+#eduwiki.Remove_Member_#
+
+
+
+ +
+ +
+
+
+
+
+#eduwiki.finish# +
+
+ + Index: openacs-4/packages/eduwiki/www/admin/groups-admin.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/groups-admin.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/groups-admin.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,167 @@ +# /packages/eduwiki/www/admin/groups-admin.tcl + +ad_page_contract { + Page to manage eduwiki groups + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-06-03 + @cvs-id $Id: groups-admin.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + eduwiki_id:integer,notnull + {mode "edit"} + {group_ids ""} + {group_task_ids ""} +} + +set page_title "[_ eduwiki.Groups_manage_]" +set context [list $page_title] +set community_id [dotlrn_community::get_community_id] +set eduwiki_package_id [ad_conn package_id] +set cancel_url "eduwiki-index" + +# get eduwiki_id +set eduwiki_title "" +if {[exists_and_not_null eduwiki_id] && [::xo::db::Class exists_in_db -id $eduwiki_id]} { + set eduwiki_item_id [::eduwiki::EduwikiTask get_instance_from_db -item_id $eduwiki_id] + set eduwiki_title [$eduwiki_item_id set title] +} + + +ah::requires -sources "prototype,scriptaculous" + +template::head::add_javascript \ + -src "/resources/eduwiki/groups-admin.js" + +set optionsgroups [db_list_of_lists get_groups_in_eduwiki { *SQL* }] +if { ![empty_string_p $optionsgroups] } { + set optionsgroups [lsort $optionsgroups] +} else { + set optionsgroups "{{[_ eduwiki.not_activity_groups]} {}}" +} + +set comm_members_opts [db_list_of_lists get_students_in_comm { *SQL* }] +if { ![empty_string_p $comm_members_opts] } { + set comm_members_opts [lsort $comm_members_opts] +} else { + set comm_members_opts "{{[_ eduwiki.not_available_members]} {}}" +} + +set group_name "" +if { [info exists group_ids] } { + if { [llength $group_ids] } { + + set groups_members_opts [db_list_of_lists get_students_for_group { *SQL* }] + if { ![empty_string_p $groups_members_opts] } { + set groups_members_opts [lsort $groups_members_opts] + } else { + set groups_members_opts "{{[_ eduwiki.not_members_in_group]} {}}" + } + + #set comm_members_opts [db_list_of_lists get_students_not_in_group { *SQL* }] + #if { ![empty_string_p $comm_members_opts] } { + # set comm_members_opts [lsort $comm_members_opts] + #} else { + # set comm_members_opts "{{[_ eduwiki.not_available_members]} {}}" + #} + + if {[llength $group_ids] == 1} { + set group_name [group::get_element -group_id [lindex $group_ids 0] -element "group_name"] + } + + } else { + set groups_members_opts "{{[_ eduwiki.not_selected_group]} {}}" + } +} + +set eduwiki_groups_opts [db_list_of_lists get_groups_in_eduwiki_task { *SQL* }] +if { ![empty_string_p $eduwiki_groups_opts] } { + set eduwiki_groups_opts [lsort $eduwiki_groups_opts] +} else { + set eduwiki_groups_opts "{{[_ eduwiki.not_activity_groups]} {}}" +} + +ad_form -name eduwiki_groups -mode $mode -form { + + {eduwiki_id:text(hidden) + {label ""} + {value $eduwiki_id} + {html {id eduwiki_id}} + } + {eduwiki_action:text(hidden),optional + {label ""} + {value ""} + {html {id eduwiki_action}} + } + {eduwiki_group_name:text,optional + {label "[_ eduwiki.Group_name_]"} + {html {size 15 id eduwiki_group_name}} + } + {eduwiki_groups_actualgroups:text,optional,multiple + {label "[_ eduwiki.Select_Groups]"} + {widget multiselect} + {options $optionsgroups} + {values $group_ids} + {html {size 10 id eduwiki_groups_actualgroups onChange "document.eduwiki_groups.submit();"}} + } + {eduwiki_groups_comm_members:text,optional,multiple + {label "[_ eduwiki.Comm_Members]"} + {widget multiselect} + {options $comm_members_opts} + {html {size 10 id eduwiki_groups_comm_members}} + } + {eduwiki_groups_members:text,optional,multiple + {label "[_ eduwiki.Groups_Members]"} + {widget multiselect} + {options $groups_members_opts} + {html {size 10 id eduwiki_groups_members}} + } + {eduwiki_task_groups:text,optional,multiple + {label "[_ eduwiki.task_Groups]"} + {widget multiselect} + {options $eduwiki_groups_opts} + {html {size 10}} + } +} -on_submit { + # eduwiki_action + set base_url "groups-admin" + set selected_members_list "" + set group_id_list "" + if {![empty_string_p $eduwiki_action]} { + if { $eduwiki_action == "member_add" } { + set base_url "group-add-member" + set selected_members_list $eduwiki_groups_comm_members + } + if { $eduwiki_action == "member_remove" } { + set base_url "group-remove-member" + set selected_members_list $eduwiki_groups_members + } + if { $eduwiki_action == "group_to_task_add" } { + if {![empty_string_p $eduwiki_groups_actualgroups]} { + set base_url "eduwiki-add-group" + set group_id_list $eduwiki_groups_actualgroups + } + } + if { $eduwiki_action == "group_to_task_remove" } { + set base_url "eduwiki-remove-group" + set group_id_list $eduwiki_task_groups + } + if { $eduwiki_action == "add_group" && ![empty_string_p $eduwiki_group_name] } { + set base_url "group-add-2" + } + if { $eduwiki_action == "delete_group" } { + set base_url "group-delete" + } + + } + + set group_id "" + if { [llength $eduwiki_groups_actualgroups] == 1 } { + set group_id [lindex $eduwiki_groups_actualgroups 0] + } + + ad_returnredirect [export_vars -base $base_url {eduwiki_id group_id selected_members_list group_id_list {group_name $eduwiki_group_name} {group_ids $eduwiki_groups_actualgroups} {group_task_ids $eduwiki_task_groups}}] + ad_script_abort +} + + +ad_return_template Index: openacs-4/packages/eduwiki/www/admin/groups-admin.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/groups-admin.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/groups-admin.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,98 @@ + + + + + + select + p.last_name ||', '|| p.first_names as student_name, + p.person_id as student_id + from + persons p, + dotlrn_member_rels_approved app + where + app.community_id = :community_id + and app.user_id = p.person_id + and app.role = 'student' + and p.person_id not in (select map.object_id_two + from acs_rels map + where map.object_id_two = p.person_id + and map.object_id_one in (select party_id + from eduwiki_groups_map + where eduwiki_id = :eduwiki_id)) + order by p.last_name asc + + + + + + + select + p.last_name ||', '|| p.first_names as student_name, + p.person_id as student_id + from + persons p, + dotlrn_member_rels_approved app + where + app.community_id = :community_id + and app.user_id = p.person_id + and app.role = 'student' + and p.person_id not in (select map.object_id_two from acs_rels map where map.object_id_two = p.person_id and map.object_id_one in ([join $group_ids ,])) + order by p.last_name asc + + + + + + + select + p.last_name ||', '|| p.first_names as student_name, + p.person_id as student_id + from + persons p, + dotlrn_member_rels_approved app + where + app.community_id = :community_id + and app.user_id = p.person_id + and app.role = 'student' + and p.person_id in (select map.object_id_two from acs_rels map where map.object_id_two = p.person_id and map.object_id_one in ([join $group_ids ,])) + order by p.last_name asc + + + + + + + select + g.group_name, + g.group_id + from + groups g, + acs_objects ao + where + g.group_id = ao.object_id + and + ao.context_id = :eduwiki_package_id + and + g.group_id in ( select g1.party_id + from eduwiki_groups_map g1 + where g1.eduwiki_id = :eduwiki_id ) + + + + + + select + g.group_name, + g.group_id + from + groups g, + eduwiki_groups_map eg + where + g.group_id = eg.party_id + and + eg.eduwiki_id = :eduwiki_id + + + + + Index: openacs-4/packages/eduwiki/www/admin/index.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/index.vuh,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/index.vuh 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,9 @@ +if {[acs_user::site_wide_admin_p]} { + ::eduwiki::Package initialize + set l [expr {[lsearch -exact [ns_conn urlv] admin] + 1 }] + set path [join [lrange [ns_conn urlv] $l end] /] + rp_internal_redirect /packages/xowiki/www/admin/$path +} else { + set package_url [ad_conn package_url] + ad_returnredirect "${package_url}admin/eduwiki-index" +} \ No newline at end of file Index: openacs-4/packages/eduwiki/www/admin/list.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/list.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/list.adp 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,43 @@ + + @title;noquote@ + @title;noquote@ + @context;noquote@ + + + + + + + + +
+RSS +@t1;noquote@ +
+ Index: openacs-4/packages/eduwiki/www/admin/list.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/list.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/list.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,155 @@ +::eduwiki::Package initialize -ad_doc { + This is the admin page for the package. It displays all entries + provides links to create, edit and delete these + + @author Gustaf Neumann (gustaf.neumann@wu-wien.ac.at) + @creation-date Oct 23, 2005 + @cvs-id $Id: list.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ + + @param object_type show objects of this class and its subclasses +} -parameter { + {-object_type:optional} + {-orderby:optional "last_modified,desc"} +} + +set context [list index] + +# if object_type is specified, only list entries of this type; +# otherwise show types and subtypes of $supertype +if {![info exists object_type]} { + set per_type 0 + set supertype ::xowiki::Page + set object_types [$supertype object_types] + set page_title "List of all kind of [$supertype set pretty_plural]" + set with_subtypes true + set object_type $supertype + set with_children true +} else { + set per_type 1 + set object_types [list $object_type] + set page_title "Index of [$object_type set pretty_plural]" + set with_subtypes false + set with_children true +} + +set return_url [expr {$per_type ? [export_vars -base [::$package_id url] object_type] : + [::$package_id url]}] + +set category_url [export_vars -base [$package_id package_url] { {manage-categories 1} {object_id $package_id}}] + +set actions [subst { + Action new -label "[lang::message::lookup {} categories.Categories Categories]" \ + -url $category_url +}] +foreach type $object_types { + set link [$package_id make_link -with_entities 0 \ + $package_id edit-new {object_type $type} return_url autoname] + if {$link eq ""} continue + append actions [subst { + Action new \ + -label "[_ xotcl-core.add [list type [$type pretty_name]]]" \ + -url "$link" \ + -tooltip "[_ xotcl-core.add_long [list type [$type pretty_name]]]" + }] +} + +set ::individual_permissions [expr {[$package_id set policy] eq "::eduwiki::policy3"}] +set ::with_publish_status 1 + +TableWidget t1 -volatile \ + -actions $actions \ + -columns { + BulkAction objects -id name -actions { + Action new -label export -tooltip export -url export + Action new -label delete -tooltip delete -url bulk-delete + } + AnchorField edit -CSSclass edit-item-button -label "" -html {style "padding: 0px;"} + if {$::individual_permissions} { + ImageAnchorField permissions -src /resources/xowiki/permissions.png -width 16 \ + -height 16 -border 0 -title "Manage Individual Permssions for this Item" \ + -alt permsissions -label "" -html {style "padding: 2px;"} + } + if {$::with_publish_status} { + ImageAnchorField publish_status -orderby publish_status.src -src "" \ + -width 8 -height 8 -border 0 -title "Toggle Publish Status" \ + -alt "publish status" -label [_ xowiki.publish_status] -html {style "padding: 2px;text-align: center;"} + } + Field syndicated -label "RSS" -html {style "padding: 2px; text-align: center;"} + AnchorField page_order -label [_ xowiki.Page-page_order] -orderby page_order -html {style "padding: 2px;"} + AnchorField name -label [_ xowiki.Page-name] -orderby name -html {style "padding: 2px;"} + AnchorField title -label [_ xowiki.Page-title] -orderby title + Field object_type -label [_ xowiki.page_type] -orderby object_type -html {style "padding: 2px;"} + Field size -label "Size" -orderby size -html {align right style "padding: 2px;"} + Field last_modified -label [_ xowiki.Page-last_modified] -orderby last_modified + Field mod_user -label "By User" -orderby mod_user + AnchorField delete -CSSclass delete-item-button -label "" ;#-html {onClick "return(confirm('Confirm delete?'));"} + } + +foreach {att order} [split $orderby ,] break +t1 orderby -order [expr {$order eq "asc" ? "increasing" : "decreasing"}] $att + +# -page_size 10 +# -page_number 1 + +# for content_length, we need cr_revision and cannot use the base table +set attributes [list revision_id content_length creation_user title page_order parent_id \ + "to_char(last_modified,'YYYY-MM-DD HH24:MI:SS') as last_modified" ] + +set folder_id [::$package_id folder_id] +foreach i [db_list get_syndicated { + select object_id from syndication s, cr_items ci + where object_id = ci.live_revision and parent_id = :folder_id +}] { set syndicated($i) 1 } + +db_foreach instance_select \ + [$object_type instance_select_query \ + -folder_id $folder_id \ + -with_subtypes $with_subtypes \ + -from_clause ", xowiki_page p" \ + -where_clause "p.page_id = bt.revision_id" \ + -with_children $with_children \ + -select_attributes $attributes \ + -orderby ci.name \ + ] { + set page_link [::$package_id pretty_link -parent_id $parent_id $name] + set name [::$package_id external_name -parent_id $parent_id $name] + + t1 add \ + -name $name \ + -title $title \ + -object_type [string map [list "::xowiki::" ""] $object_type] \ + -name.href $page_link \ + -last_modified $last_modified \ + -syndicated [info exists syndicated($revision_id)] \ + -size [expr {$content_length ne "" ? $content_length : 0}] \ + -edit "" \ + -edit.href [export_vars -base $page_link {{m edit} return_url}] \ + -edit.title #xowiki.edit# \ + -mod_user [::xo::get_user_name $creation_user] \ + -delete "" \ + -delete.href [export_vars -base [$package_id package_url] {{delete 1} item_id name return_url}] \ + -delete.title #xowiki.delete# + if {$::individual_permissions} { + [t1 last_child] set permissions.href \ + [export_vars -base permissions {item_id return_url}] + } + if {$::with_publish_status} { + # TODO: this should get some architectural support + if {$publish_status eq "ready"} { + set image active.png + set state "production" + } else { + set image inactive.png + set state "ready" + } + [t1 last_child] set publish_status.src /resources/xowiki/$image + [t1 last_child] set publish_status.href \ + [export_vars -base [$package_id package_url]admin/set-publish-state \ + {state revision_id return_url}] + } + [t1 last_child] set page_order $page_order + } + +set t1 [t1 asHTML] +# db_foreach clobbers title, so re-establish it +set title $page_title Index: openacs-4/packages/eduwiki/www/admin/member-task-add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/member-task-add.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/member-task-add.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,53 @@ +# /packages/eduwiki/www/admin/member-task-add.tcl + +ad_page_contract { + Page to add student to eduwiki task + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-08-05 + @cvs-id $Id: member-task-add.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ +} { + student_id:integer,notnull + eduwiki_id:integer,notnull +} + +set community_id [dotlrn_community::get_community_id] +set package_id [ad_conn package_id] + +# get EduwikiTask info +set eduwiki_task_id [content::item::get_live_revision -item_id $eduwiki_id] +db_1row get_instance_select [::eduwiki::EduwikiTask instance_select_query \ + -parent_id $package_id \ + -from_clause ", eduwiki_tasks e" \ + -select_attributes [list eduwiki_id \ + eduwiki_category \ + eduwiki_visible_all_p \ + eduwiki_editable_all_p \ + eduwiki_create_all_p \ + eduwiki_evaluation_related_p \ + "description as eduwiki_description" \ + "bt.title as eduwiki_title" \ + "name as eduwiki_name" \ + "to_char(release_date,'YYYY MM DD HH24 MI SS') as publish_date" \ + "to_char(close_date,'YYYY MM DD HH24 MI SS') as close_date"] \ + -where_clause "e.eduwiki_id = acs_objects.object_id and e.eduwiki_id = :eduwiki_task_id" \ + ] + +# save student page + +set eduwiki_page_data [eduwiki::create_page -page_title $eduwiki_title] +set eduwiki_page_id [lindex $eduwiki_page_data 0] +if { ![empty_string_p $eduwiki_page_id] && ![empty_string_p $item_id] } { + set eduwiki_party_id $student_id + db_dml insert_eduwiki_pages_map { *SQL* } + eduwiki::set_eduwiki_permissions -eduwiki_page_id $eduwiki_page_id \ + -party_id $eduwiki_party_id \ + -eduwiki_category $eduwiki_category \ + -eduwiki_visible_all_p $eduwiki_visible_all_p \ + -eduwiki_editable_all_p $eduwiki_editable_all_p \ + -eduwiki_create_all_p $eduwiki_create_all_p \ + -eduwiki_index_p "t" +} + +ad_returnredirect [export_vars -base "eduwiki-list" {{eduwiki_id $item_id}}] +ad_script_abort Index: openacs-4/packages/eduwiki/www/admin/member-task-add.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/member-task-add.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/member-task-add.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,14 @@ + + + + + + + insert into eduwiki_pages_map + (eduwiki_id, page_id, party_id, index_p) + values + (:item_id, :eduwiki_page_id, :eduwiki_party_id, 't') + + + + Index: openacs-4/packages/eduwiki/www/admin/set-item-publish-state.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/set-item-publish-state.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/set-item-publish-state.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,31 @@ +#/packages/eduwiki/www/admin/set-item-publish-state.tcl + +::eduwiki::Package initialize -ad_doc { + + Change item publish_state + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-28 + @cvs-id $Id: set-item-publish-state.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ + + @param item_id The item_id to change publish_state +} -parameter { + {-publish_status "ready"} + {-item_id:integer} + {-eduwiki_id:integer} +} + +permission::require_write_permission -object_id $item_id +# change publish_state to task and pages +db_transaction { + + if { ($publish_status == "ready") || ($publish_status == "production") } { + db_dml update_pages_publish_state { *SQL* } + } + +} on_error { + ns_log notice "There was an error changing publish_status to item_id $item_id" +} + +ad_returnredirect [export_vars -base "eduwiki-list" {eduwiki_id}] + Index: openacs-4/packages/eduwiki/www/admin/set-item-publish-state.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/set-item-publish-state.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/set-item-publish-state.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,11 @@ + + + + + + update cr_items + set publish_status = :publish_status + where item_id = :item_id + + + Index: openacs-4/packages/eduwiki/www/admin/set-publish-state.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/set-publish-state.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/set-publish-state.tcl 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,36 @@ +#/packages/eduwiki/www/admin/set-publish-state.tcl + +::eduwiki::Package initialize -ad_doc { + + Change publish_state to EduwikiTask + + @author Hector Amado (hr_amado@galileo.edu) + @creation-date 2009-07-27 + @cvs-id $Id: set-publish-state.tcl,v 1.1 2009/10/07 19:11:52 hramado Exp $ + + @param eduwiki_id The eduwiki_id of the Task to change publish_state +} -parameter { + {-publish_status "ready"} + {-item_id:integer} +} + +permission::require_write_permission -object_id $item_id +#::xo::db::CrItem delete -item_id $item_id +# change publish_state to task and pages +db_transaction { + + if { ($publish_status == "ready") || ($publish_status == "production") } { + set eduwiki_item_id $item_id + db_dml update_publish_state { *SQL* } + db_foreach update_activity_pages { *SQL* } { + db_dml update_pages_publish_state { *SQL* } + } + + } + +} on_error { + ns_log notice "There was an error changing publish_status to eduwiki_id $item_id" +} + +ad_returnredirect "eduwiki-index" + Index: openacs-4/packages/eduwiki/www/admin/set-publish-state.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/admin/set-publish-state.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/admin/set-publish-state.xql 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,28 @@ + + + + + + update cr_items + set publish_status = :publish_status + where item_id = :eduwiki_item_id + + + + + + update cr_items + set publish_status = :publish_status + where item_id = :page_item_id + + + + + + select page_id as page_item_id + from eduwiki_pages_map + where eduwiki_id = :eduwiki_item_id + + + + Index: openacs-4/packages/eduwiki/www/prototypes/editor.page =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/prototypes/editor.page,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/prototypes/editor.page 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,31 @@ +::xowiki::Object new -title "RichText Editor Config" -text { + + set xinha {richtext(richtext),nospell + {options {editor xinha plugins { + GetHtml ContextMenu CharacterMap TableOperations + ListType EditTag + } height 350px javascript { +xinha_config.toolbar = + [ + ["popupeditor"], + ["separator","formatblock","fontname","fontsize","bold","italic","underline","strikethrough"], + ["separator","forecolor","hilitecolor","textindicator"], + ["linebreak","separator","justifyleft","justifycenter","justifyright","justifyfull"], + ["separator","insertorderedlist","insertunorderedlist","outdent","indent"], + ["separator","inserthorizontalrule","createlink","insertimage","inserttable"], + ["linebreak","separator","undo","redo"], + ["separator","killword","clearfonts","removeformat"], + ["htmlmode"] + ]; + }}} + {html {rows 15 cols 50 style {width: 90%}}} + {label \#xowiki.Page-text\#} + {htmlarea_p 1}} + +set name {text(hidden) {label \#xowiki.Page-name\#}} +set autor {text(hidden) {label \#xowiki.Page-creator\#}} +set descr {text(hidden),optional {label \#xowiki.description\#} {html {size 40 maxlength 50}} {values ""}} +set tit {text {label \#eduwiki.Eduwiki_Title_\#} {html {size 40 maxlength 50}} {values ""}} +set nslg {text(hidden) {label \#xowiki.Page-nls_language\#} {values "[lang::system::locale]"}} +set widget_specs [list *,name $name *,creator $autor *,text $xinha *,title $tit *,description $descr *,nls_language $nslg] +} \ No newline at end of file Index: openacs-4/packages/eduwiki/www/prototypes/index.page =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/prototypes/index.page,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/prototypes/index.page 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,10 @@ +::xowiki::Page new -title "#eduwiki.IndexPage#" -text { +{ +>>left-col75<< +{{activity-info}} +{{eduwiki-activities-pages}} +>><< +>>right-col25<< +  +>><< } text/html +} Index: openacs-4/packages/eduwiki/www/resources/groups-admin.js =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/eduwiki/www/resources/groups-admin.js,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/eduwiki/www/resources/groups-admin.js 7 Oct 2009 19:11:52 -0000 1.1 @@ -0,0 +1,179 @@ +/* + * Javascript Functions for group administration + * Eduwiki Package + */ + + function add_group_member() { + var selected_members = document.getElementById('eduwiki_groups_comm_members').options; + var selected_members_list = "" + var selected_members_count = 0 + + for ( i=0; i 0) { + if (selected_groups_count == 0) { + var msg_group1 = "You must select a group to add members"; + alert(msg_group1); + } else { + if (selected_groups_count == 1) { + var selected_group_id = selected_groups_list; + + document.getElementById('eduwiki_action').value = "member_add"; + document.eduwiki_groups.submit(); + } else { + alert("You must select only one group"); + } + } + } else { + alert("You must select at least one member"); + } + } + + function remove_group_member() { + var selected_members = document.getElementById('eduwiki_groups_members').options; + var selected_members_list = "" + var selected_members_count = 0 + + for ( i=0; i 0) { + if (selected_groups_count == 0) { + alert("You must select a group to remove members"); + } else { + if (selected_groups_count == 1) { + var selected_group_id = selected_groups_list; + + document.getElementById('eduwiki_action').value = "member_remove"; + document.eduwiki_groups.submit(); + } else { + alert("You must select only one group"); + } + } + } else { + alert("You must select at least one member"); + } + } + + function add_group_to_task() { + // get selected group_id + var selected_groups = document.getElementById('eduwiki_groups_actualgroups').options; + var eduwiki_id = document.getElementById('eduwiki_id').value; + var selected_groups_list = "" + var selected_groups_count = 0 + for ( i=0; i