Index: openacs-4/packages/dotlrn-wikipedia/dotlrn-wikipedia.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-wikipedia/dotlrn-wikipedia.info,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-wikipedia/dotlrn-wikipedia.info 22 Jun 2006 09:09:08 -0000 1.1 @@ -0,0 +1,24 @@ +<?xml version="1.0"?> +<!-- Generated by the OpenACS Package Manager --> + +<package key="dotlrn-wikipedia" url="http://openacs.org/repository/apm/packages/dotlrn-wikipedia" type="apm_service"> + <package-name>dotLRN Wikipedia Applet</package-name> + <pretty-plural>dotLRN Wikipedia Applets</pretty-plural> + <initial-install-p>f</initial-install-p> + <singleton-p>t</singleton-p> + + <version name="0.1d" url="http://openacs.org/repository/download/apm/dotlrn-wikipedia-0.1d.apm"> + <owner url="http://openacs.org">OpenACS</owner> + <release-date>2006-05-15</release-date> + <vendor url="http://openacs.org">OpenACS</vendor> + <maturity>0</maturity> + + <provides url="dotlrn-wikipedia" version="0.1d"/> + <requires url="dotlrn" version="1.0"/> + <requires url="wikipedia-portlet" version="0.1d"/> + + <parameters> + </parameters> + + </version> +</package> Index: openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.ca_ES.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.ca_ES.ISO-8859-1.xml,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.ca_ES.ISO-8859-1.xml 22 Jun 2006 09:09:08 -0000 1.1 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<message_catalog package_key="dotlrn-wikipedia" package_version="0.1d" locale="ca_ES" charset="ISO-8859-1"> + + <msg key="No_Found">No s'ha trobat</msg> + <msg key="pretty_name">Enciclop�dia</msg> + <msg key="entry">Terme</msg> + <msg key="search">Cercar</msg> + <msg key="goto">Anar a Enciclop�dia</msg> + <msg key="seefull">Tot el terme</msg> +</message_catalog> Index: openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.en_US.ISO-8859-1.xml,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.en_US.ISO-8859-1.xml 22 Jun 2006 09:09:08 -0000 1.1 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<message_catalog package_key="dotlrn-wikipedia" package_version="0.1d" locale="en_US" charset="ISO-8859-1"> + + <msg key="No_Found">Not found</msg> + <msg key="pretty_name">Encyclopedia</msg> + <msg key="entry">Entry</msg> + <msg key="search">Search</msg> + <msg key="goto">Goto Encyclop�dia</msg> + <msg key="seefull">See full entry</msg> +</message_catalog> Index: openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.es_ES.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.es_ES.ISO-8859-1.xml,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-wikipedia/catalog/dotlrn-wikipedia.es_ES.ISO-8859-1.xml 22 Jun 2006 09:09:08 -0000 1.1 @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<message_catalog package_key="dotlrn-wikipedia" package_version="0.1d" locale="es_ES" charset="ISO-8859-1"> + + <msg key="No_Found">No encontrado</msg> + <msg key="pretty_name">Enciclopedia</msg> + <msg key="entry">T�rmino</msg> + <msg key="search">Buscar</msg> + <msg key="goto">Ir a Enciclopedia</msg> + <msg key="seefull">Entrada completa</msg> +</message_catalog> Index: openacs-4/packages/dotlrn-wikipedia/sql/postgresql/dotlrn-wikipedia-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-wikipedia/sql/postgresql/dotlrn-wikipedia-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-wikipedia/sql/postgresql/dotlrn-wikipedia-create.sql 22 Jun 2006 09:09:08 -0000 1.1 @@ -0,0 +1,127 @@ + +create function inline_0() +returns integer as ' +begin + + perform acs_sc_impl__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''dotlrn_wikipedia'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''GetPrettyName'', + ''dotlrn_wikipedia::get_pretty_name'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''AddApplet'', + ''dotlrn_wikipedia::add_applet'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''RemoveApplet'', + ''dotlrn_wikipedia::remove_applet'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''AddAppletToCommunity'', + ''dotlrn_wikipedia::add_applet_to_community'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''RemoveAppletFromCommunity'', + ''dotlrn_wikipedia::remove_applet_from_community'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''AddUser'', + ''dotlrn_wikipedia::add_user'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''RemoveUser'', + ''dotlrn_wikipedia::remove_user'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''AddUserToCommunity'', + ''dotlrn_wikipedia::add_user_to_community'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''RemoveUserFromCommunity'', + ''dotlrn_wikipedia::remove_user_from_community'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''AddPortlet'', + ''dotlrn_wikipedia::add_portlet'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''RemovePortlet'', + ''dotlrn_wikipedia::remove_portlet'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''Clone'', + ''dotlrn_wikipedia::clone'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'', + ''ChangeEventHandler'', + ''dotlrn_wikipedia::change_event_handler'', + ''TCL'' + ); + + perform acs_sc_binding__new ( + ''dotlrn_applet'', + ''dotlrn_wikipedia'' + ); + + return 0; + +end;' language 'plpgsql'; + +select inline_0(); +drop function inline_0(); + Index: openacs-4/packages/dotlrn-wikipedia/sql/postgresql/dotlrn-wikipedia-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-wikipedia/sql/postgresql/dotlrn-wikipedia-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-wikipedia/sql/postgresql/dotlrn-wikipedia-drop.sql 22 Jun 2006 09:09:08 -0000 1.1 @@ -0,0 +1,108 @@ + +select acs_sc_impl__delete( + 'dotlrn_applet', -- impl_contract_name + 'dotlrn_wikipedia' -- impl_name +); + + +-- add all the hooks + +-- GetPrettyName +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'GetPrettyName' +); + +-- AddApplet +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'AddApplet' +); + +-- RemoveApplet +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'RemoveApplet' +); + +-- AddAppletToCommunity +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'AddAppletToCommunity' +); + +-- RemoveAppletFromCommunity +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'RemoveAppletFromCommunity' +); + +-- AddUser +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'AddUser' +); + +-- RemoveUser +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'RemoveUser' +); + +-- AddUserToCommunity +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'AddUserToCommunity' +); + +-- RemoveUserFromCommunity +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'RemoveUserFromCommunity' +); + +-- AddPortlet +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'AddPortlet' + ); + +-- RemovePortlet +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'RemovePortlet' +); + +-- Clone +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'Clone' +); + + +-- Clone +select acs_sc_impl_alias__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia', + 'ChangeEventHandler' +); + +-- Add the binding +select acs_sc_binding__delete ( + 'dotlrn_applet', + 'dotlrn_wikipedia' +); + + Index: openacs-4/packages/dotlrn-wikipedia/tcl/dotlrn-wikipedia-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-wikipedia/tcl/dotlrn-wikipedia-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-wikipedia/tcl/dotlrn-wikipedia-procs.tcl 22 Jun 2006 09:09:08 -0000 1.1 @@ -0,0 +1,239 @@ + +ad_library { + +} + +namespace eval dotlrn_wikipedia { + + ad_proc -public applet_key { + } { + What's my applet key? + } { + return dotlrn_wikipedia + } + + ad_proc -public my_package_key { + } { + What's my package key? + } { + return "dotlrn-wikipedia" + } + + ad_proc -public package_key { + } { + What package does this applet deal with? + } { + return wikipedia + } + + ad_proc -public get_pretty_name { + } { + return the pretty name of this applet. + } { + return Wikipedia + } + + ad_proc -public add_applet { + } { + Add the wikipedia applet to dotlrn - for one-time init + Must be repeatable! + } { + if {![dotlrn_applet::applet_exists_p -applet_key [applet_key]]} { + + db_transaction { + dotlrn_applet::mount \ + -package_key [my_package_key] \ + -url wikipedia \ + -pretty_name [get_pretty_name] + + dotlrn_applet::add_applet_to_dotlrn \ + -applet_key [applet_key] \ + -package_key [my_package_key] + } + + } + } + + ad_proc -public remove_applet { + } { + remove the applet from dotlrn + } { + ad_return_complaint 1 "[applet_key] remove_applet not implemented!" + } + + ad_proc -public add_applet_to_community { + community_id + } { + Add the wikipedia applet to a dotlrn community + } { + # Create and Mount the wikipedia package + set package_id [dotlrn::instantiate_and_mount \ + -mount_point wikipedia \ + $community_id \ + [package_key] \ + ] + + # set up the bboard portlet for this community + set portal_id [dotlrn_community::get_portal_id \ + -community_id $community_id \ + ] + + # add the portlet to the comm's portal using add_portlet_helper + set args [ns_set create] + ns_set put $args package_id $package_id + ns_set put $args param_action overwrite + + dotlrn_wikipedia::add_portlet_helper $portal_id $args + + return $package_id + } + + ad_proc -public remove_applet_from_community { + community_id + } { + remove the applet from the given community + } { + ad_return_complaint 1 "[applet_key] remove_applet_from_community not implemented!" + } + + ad_proc -public add_user { + user_id + } { + Called when the user is initially added as a dotlrn user. + For one-time init stuff. + } { + } + + ad_proc -public remove_user { + user_id + } { + called when a user is removed from dotlrn. + } { + } + + ad_proc -public add_user_to_community { + community_id + user_id + } { + Add a user to a specific dotlrn community + } { + set portal_id [dotlrn::get_portal_id -user_id $user_id] + set package_id [dotlrn_community::get_applet_package_id \ + -community_id $community_id \ + -applet_key [applet_key] \ + ] + set args [ns_set create] + ns_set put $args package_id $package_id + ns_set put $args param_action append + + # don't use the cached version + dotlrn_wikipedia::add_portlet_helper \ + [dotlrn::get_portal_id_not_cached -user_id $user_id] \ + $args + + dotlrn_wikipedia::add_portlet_helper $portal_id $args + + } + + ad_proc -public remove_user_from_community { + community_id + user_id + } { + Remove a user from a community + } { + set portal_id [dotlrn::get_portal_id -user_id $user_id] + set package_id [dotlrn_community::get_applet_package_id \ + -community_id $community_id \ + -applet_key [applet_key] \ + ] + + set args [ns_set create] + ns_set put $args package_id $package_id + + remove_portlet $portal_id $args + + } + + ad_proc -public add_portlet { + portal_id + } { + A helper proc to set up default params for templates. + + @param portal_id + } { + set args [ns_set create] + ns_set put $args package_id 0 + ns_set put $args param_action overwrite + + set type [dotlrn::get_type_from_portal_id -portal_id $portal_id] + + if {[string equal $type user]} { + # portal_id is a user portal template + } + + add_portlet_helper $portal_id $args + } + + ad_proc -public add_portlet_helper { + portal_id + args + } { + This does the call to add the portlet to the given portal. + Params for the portlet are set by the calllers. + + @param portal_id + @param args An ns_set of params + } { + wikipedia_portlet::add_self_to_page \ + -portal_id $portal_id \ + -package_id [ns_set get $args package_id] \ + -param_action [ns_set get $args param_action] + } + + ad_proc -public remove_portlet { + portal_id + args + } { + A helper proc to remove the underlying portlet from the given portal. + + @param portal_id + @param args An ns_set of args + } { + set package_id [ns_set get $args package_id] + #wikipedia_portlet::remove_self_from_page $portal_id $package_id + } + + ad_proc -public clone { + old_community_id + new_community_id + } { + Clone this applet's content from the old community to the new one + } { + dotlrn_wikipedia::add_applet_to_community $new_community_id + } + + ad_proc -public change_event_handler { + community_id + event + old_value + new_value + } { + listens for the following events: rename + } { + switch $event { + rename { + handle_rename -community_id $community_id -old_value $old_value -new_value $new_value + } + } + } + + ad_proc -private handle_rename { + {-community_id:required} + {-old_value:required} + {-new_value:required} + } { + what to do with wikipedia when the name of the community changes + } { + } + +} Index: openacs-4/packages/dotlrn-wikipedia/tcl/dotlrn-wikipedia-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/dotlrn-wikipedia/tcl/dotlrn-wikipedia-procs.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/dotlrn-wikipedia/tcl/dotlrn-wikipedia-procs.xql 22 Jun 2006 09:09:08 -0000 1.1 @@ -0,0 +1,3 @@ +<?xml version="1.0"?> +<queryset> +</queryset> Index: openacs-4/packages/wikipedia/wikipedia.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia/wikipedia.info,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia/wikipedia.info 22 Jun 2006 09:07:44 -0000 1.1 @@ -0,0 +1,23 @@ +<?xml version="1.0"?> +<!-- Generated by the OpenACS Package Manager --> + +<package key="wikipedia" url="http://openacs.org/repository/apm/packages/wikipedia" type="apm_application"> + <package-name>Wikipedia</package-name> + <pretty-plural>Wikipedia</pretty-plural> + <initial-install-p>f</initial-install-p> + <singleton-p>f</singleton-p> + <auto-mount>wikipedia</auto-mount> + + <version name="0.1d" url="http://openacs.org/repository/download/apm/wikipedia-0.1d.apm"> + <owner url="mailto:agustin.lopez@uv.es">Agustin Lopez</owner> + <maturity>0</maturity> + + <!-- No dependency information --> + + <callbacks> + </callbacks> + <parameters> + </parameters> + + </version> +</package> Index: openacs-4/packages/wikipedia/www/search.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia/www/search.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia/www/search.adp 22 Jun 2006 09:07:44 -0000 1.1 @@ -0,0 +1,22 @@ +<master> +<link rel="stylesheet" type="text/css" href="/resources/dotlrn/dotlrn-master.css" media="all"> + +<FORM action="@urltoform@" method="post"> + #dotlrn-wikipedia.entry#: + <input type="text" size="20" maxlength=100" name="whatsearch" value="@whatsearch@" /> + <SELECT NAME="xlang"> + <OPTION VALUE="es" label="Espa�ol" @s_es@>Espa�ol + <OPTION VALUE="ca" label="Catal�" @s_ca@>Catal� + <OPTION VALUE="en" label="English" @s_en@>English + <OPTION VALUE="fr" label="Fran�ais" @s_fr@>Fran�ais + <OPTION VALUE="de" label="Deutsch" @s_de@>Deutsch + <OPTION VALUE="pt" label="Portugu�s" @s_pt@>Portugu�s + <OPTION VALUE="it" label="Italiano" @s_it@>Italiano + </SELECT> + <input type="submit" name="search" value="#dotlrn-wikipedia.search#" /> +</FORM> + +<if @toshow@ ne ""> + <HR> + @toshow;noquote@ +</if> Index: openacs-4/packages/wikipedia/www/search.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia/www/search.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia/www/search.tcl 22 Jun 2006 09:07:44 -0000 1.1 @@ -0,0 +1,82 @@ +ad_page_contract { +} { + {whatsearch:trim ""} + {xlang:trim "es"} + {see:trim "short"} +} -properties { +} + + +set WIKIPEDIA_BASE "http://%s.wikipedia.org" +set WIKIPEDIA_URL [format "$WIKIPEDIA_BASE" $xlang] +set WIKIPEDIA_SEARCH_URL "$WIKIPEDIA_URL/wiki" +set STRING_MAX_LENGTH 5000 + +set timeout 30 +set depth 3 +set redirect_url "error.tcl" +set result "" +set toshow "" + +switch -glob $xlang { + "es" {set s_es "selected"; set s_ca ""; set s_en ""; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "";} + "ca" {set s_es ""; set s_ca "selected"; set s_en ""; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "";} + "en" {set s_es ""; set s_ca ""; set s_en "selected"; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "";} + "fr" {set s_es ""; set s_ca ""; set s_en ""; set s_fr "selected"; + set s_de ""; set s_pt ""; set s_it "";} + "de" {set s_es ""; set s_ca ""; set s_en ""; set s_fr ""; + set s_de "selected"; set s_pt ""; set s_it "";} + "pt" {set s_es ""; set s_ca ""; set s_en ""; set s_fr ""; + set s_de ""; set s_pt "selected"; set s_it "";} + "it" {set s_es ""; set s_ca ""; set s_en ""; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "selected";} + default {set s_es ""; set s_ca ""; set s_en "selected"; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "";} +} + +set user_id [ad_conn user_id] +set urltoform [ad_conn url] +set url "" +set urlfull "" +if {$whatsearch ne ""} { + set whatsearch [string toupper [string index $whatsearch 0]][string range $whatsearch 1 end] + set whatsearch_cod [ns_urlencode $whatsearch] + set url [format "$WIKIPEDIA_SEARCH_URL/%s" $whatsearch_cod] + set urlfull "/wikipedia/search?whatsearch=$whatsearch_cod" + + if {[catch {set rawtext [ns_httpget $url $timeout $depth]} result]} { + #ERROR + set toshow "Temporalment fora de servei" + } else { + set fn "/tmp/wikipedia_$user_id" + set fd [open $fn w] + puts -nonewline $fd $rawtext + close $fd + set fd [open $fn r] + fconfigure $fd -encoding "utf-8" + set rawtext [read $fd [file size $fn]] + close $fd + file delete $fn + + set L [string length $rawtext] + set start [string first "<!-- start content -->" $rawtext] + if {$start <= -1} { + set start 0 + } + set end [string first "<!-- end content -->" $rawtext] + set end [expr $end - 1] + if {$end <= -1} { + set end $L + } + + set rawtext [string range $rawtext $start $end] + set inter "href=\"\?search=Buscar\\&xlang=$xlang\\&whatsearch=" + regsub -nocase -line -all {href=\"/wiki/} $rawtext $inter rawtext + regsub -nocase -line -all {href=\"/w/} $rawtext "href=\"$WIKIPEDIA_URL/w/" rawtext + + set toshow $rawtext + } +} Index: openacs-4/packages/wikipedia/www/search_portlet.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia/www/search_portlet.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia/www/search_portlet.adp 22 Jun 2006 09:07:44 -0000 1.1 @@ -0,0 +1,23 @@ +<FORM action="@urltoform@" method="post"> + #dotlrn-wikipedia.entry#: + <input type="hidden" name="page_num" value="@page_num@"> + <input type="text" size="20" maxlength=100" name="whatsearch" value="@whatsearch@" /> + <SELECT NAME="xlang"> + <OPTION VALUE="es" label="Espa�ol" @s_es@>Espa�ol + <OPTION VALUE="ca" label="Catal�" @s_ca@>Catal� + <OPTION VALUE="en" label="English" @s_en@>English + <OPTION VALUE="fr" label="Fran�ais" @s_fr@>Fran�ais + <OPTION VALUE="de" label="Deutsch" @s_de@>Deutsch + <OPTION VALUE="pt" label="Portugu�s" @s_pt@>Portugu�s + <OPTION VALUE="it" label="Italiano" @s_it@>Italiano + </SELECT> + <input type="submit" name="search" value="#dotlrn-wikipedia.search#" /> + <if @toshow@ ne ""><A HREF="@urlfull@"> + [#dotlrn-wikipedia.seefull#]</A> + </if> +</FORM> + +<if @toshow@ ne ""> + <HR> + @toshow;noquote@ +</if> Index: openacs-4/packages/wikipedia/www/search_portlet.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia/www/search_portlet.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia/www/search_portlet.tcl 22 Jun 2006 09:07:44 -0000 1.1 @@ -0,0 +1,86 @@ +ad_page_contract { +} { +} -properties { +} + +set WIKIPEDIA_BASE "http://%s.wikipedia.org" +set WIKIPEDIA_URL [format "$WIKIPEDIA_BASE" $xlang] +set WIKIPEDIA_SEARCH_URL "$WIKIPEDIA_URL/wiki" +set STRING_MAX_LENGTH 5000 + +set timeout 30 +set depth 3 +set redirect_url "error.tcl" +set result "" +set toshow "" + +switch -glob $xlang { + "es" {set s_es "selected"; set s_ca ""; set s_en ""; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "";} + "ca" {set s_es ""; set s_ca "selected"; set s_en ""; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "";} + "en" {set s_es ""; set s_ca ""; set s_en "selected"; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "";} + "fr" {set s_es ""; set s_ca ""; set s_en ""; set s_fr "selected"; + set s_de ""; set s_pt ""; set s_it "";} + "de" {set s_es ""; set s_ca ""; set s_en ""; set s_fr ""; + set s_de "selected"; set s_pt ""; set s_it "";} + "pt" {set s_es ""; set s_ca ""; set s_en ""; set s_fr ""; + set s_de ""; set s_pt "selected"; set s_it "";} + "it" {set s_es ""; set s_ca ""; set s_en ""; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "selected";} + default {set s_es ""; set s_ca ""; set s_en "selected"; set s_fr ""; + set s_de ""; set s_pt ""; set s_it "";} +} + +set user_id [ad_conn user_id] +set urltoform [ad_conn url] +set url "" +set urlfull "" +if {$whatsearch ne ""} { + set whatsearch [string toupper [string index $whatsearch 0]][string range $whatsearch 1 end] + set whatsearch_cod [ns_urlencode $whatsearch] + set url [format "$WIKIPEDIA_SEARCH_URL/%s" $whatsearch_cod] + set urlfull "/wikipedia/search?xlang=$xlang&whatsearch=$whatsearch_cod" + + if {[catch {set rawtext [ns_httpget $url $timeout $depth]} result]} { + #ERROR + set toshow "Temporalment fora de servei" + } else { + + set fn "/tmp/wikipedia_$user_id" + set fd [open $fn w] + puts -nonewline $fd $rawtext + close $fd + set fd [open $fn r] + fconfigure $fd -encoding "utf-8" + set rawtext [read $fd [file size $fn]] + close $fd + file delete $fn + + set L [string length $rawtext] + set start [string first "<!-- start content -->" $rawtext] + if {$start <= -1} { + set start 0 + } + set end [string first "<!-- end content -->" $rawtext] + set end [expr $end - 1] + if {$end <= -1} { + set end $L + } + + set rawtext [string range $rawtext $start $end] + set inter "href=\"\?search=Buscar\\&xlang=$xlang\\&whatsearch=" + regsub -nocase -line -all {href=\"/wiki/} $rawtext $inter rawtext + regsub -nocase -line -all {href=\"/w/} $rawtext "href=\"$WIKIPEDIA_URL/w/" rawtext + + set toshow $rawtext + if {$see ne "full"} { + if {[string length $toshow] > $STRING_MAX_LENGTH} { + set toshow [string range $toshow 0 $STRING_MAX_LENGTH] + set toshow "$toshow \"...\n" + } + } + } +} + Index: openacs-4/packages/wikipedia-portlet/wikipedia-portlet.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/wikipedia-portlet.info,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/wikipedia-portlet.info 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<!-- Generated by the OpenACS Package Manager --> + +<package key="wikipedia-portlet" url="http://openacs.org/repository/apm/packages/wikipedia-portlet" type="apm_service"> + <package-name>Wikipedia Portlet</package-name> + <pretty-plural>Wikipedia Portlets</pretty-plural> + <initial-install-p>f</initial-install-p> + <singleton-p>t</singleton-p> + + <version name="0.1d" url="http://openacs.org/repository/download/apm/wikipedia-portlet-0.1d.apm"> + <owner url="http://openacs.org">OpenACS</owner> + <release-date>2006-04-11</release-date> + <vendor url="http://openacs.org">OpenACS</vendor> + <maturity>0</maturity> + + <provides url="wikipedia-portlet" version="0.1d"/> + <requires url="new-portal" version="0.1a"/> + <requires url="wikipedia" version="0.1d"/> + + </version> +</package> Index: openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.ca_ES.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.ca_ES.ISO-8859-1.xml,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.ca_ES.ISO-8859-1.xml 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<message_catalog package_key="wikipedia-portlet" package_version="0.1d" locale="ca_ES" charset="ISO-8859-1"> + + <msg key="admin_pretty_name">Administraci� de Wikipedia</msg> + <msg key="wikipedia">Wikipedia</msg> + <msg key="Wikipedia_main_page">P�gina principal</msg> + <msg key="pretty_name">Wikipedia</msg> +</message_catalog> Index: openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.en_US.ISO-8859-1.xml,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.en_US.ISO-8859-1.xml 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<message_catalog package_key="wikipedia-portlet" package_version="0.1d" locale="en_US" charset="ISO-8859-1"> + + <msg key="admin_pretty_name">Wikipedia administration</msg> + <msg key="wikipedia">Wikipedia</msg> + <msg key="Wikipedia_main_page">Main page</msg> + <msg key="pretty_name">Wikipedia</msg> +</message_catalog> Index: openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.es_ES.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.es_ES.ISO-8859-1.xml,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/catalog/wikipedia-portlet.es_ES.ISO-8859-1.xml 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<message_catalog package_key="wikipedia-portlet" package_version="0.1d" locale="es_ES" charset="ISO-8859-1"> + + <msg key="admin_pretty_name">Administraci�n de wikipedia</msg> + <msg key="wikipedia">Wikipedia</msg> + <msg key="Wikipedia_main_page">P�gina principal</msg> + <msg key="pretty_name">Wikipedia</msg> +</message_catalog> Index: openacs-4/packages/wikipedia-portlet/sql/postgresql/wikipedia-portlet-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/sql/postgresql/wikipedia-portlet-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/sql/postgresql/wikipedia-portlet-create.sql 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,161 @@ + +create function inline_0() +returns integer as ' +declare + ds_id portal_datasources.datasource_id%TYPE; +begin + + ds_id = portal_datasource__new( + ''wikipedia_portlet'', -- Name + ''Wikipedia portlet'' -- description + ); + + -- the standard 4 params + + -- shadeable_p + perform portal_datasource__set_def_param ( + ds_id, -- datasource_id + ''t'', -- config_required_p + ''t'', -- configured_p + ''shadeable_p'', -- key + ''t'' -- value +); + + + -- hideable_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''hideable_p'', + ''t'' +); + + -- user_editable_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''user_editable_p'', + ''f'' +); + + -- shaded_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''shaded_p'', + ''f'' +); + + -- link_hideable_p + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''t'', + ''link_hideable_p'', + ''t'' +); + +-- wikipedia-specific params + + -- community_id must be configured + perform portal_datasource__set_def_param ( + ds_id, + ''t'', + ''f'', + ''package_id'', + '''' +); + + return 0; + +end;' language 'plpgsql'; + +select inline_0(); + +drop function inline_0(); + + +create function inline_1() +returns integer as ' +begin + + -- create the implementation + perform acs_sc_impl__new ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''wikipedia_portlet'' + ); + + -- add all the hooks + perform acs_sc_impl_alias__new ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''GetMyName'', + ''wikipedia_portlet::get_my_name'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''GetPrettyName'', + ''wikipedia_portlet::get_pretty_name'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''Link'', + ''wikipedia_portlet::link'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''AddSelfToPage'', + ''wikipedia_portlet::add_self_to_page'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''Show'', + ''wikipedia_portlet::show'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''Edit'', + ''wikipedia_portlet::edit'', + ''TCL'' + ); + + perform acs_sc_impl_alias__new ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''RemoveSelfFromPage'', + ''wikipedia_portlet::remove_self_from_page'', + ''TCL'' + ); + + -- Add the binding + perform acs_sc_binding__new ( + ''portal_datasource'', + ''wikipedia_portlet'' + ); + + return 0; +end;' language 'plpgsql'; + +select inline_1(); + +drop function inline_1(); + Index: openacs-4/packages/wikipedia-portlet/sql/postgresql/wikipedia-portlet-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/sql/postgresql/wikipedia-portlet-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/sql/postgresql/wikipedia-portlet-drop.sql 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,82 @@ + +create function inline_1() +returns integer as ' +declare + ds_id portal_datasources.datasource_id%TYPE; +begin + + select datasource_id into ds_id + from portal_datasources + where name = ''wikipedia_portlet''; + + if not found then + RAISE EXCEPTION '' No datasource id found '', ds_id; + ds_id := null; + end if; + + if ds_id is NOT null then + perform portal_datasource__delete(ds_id); + end if; + + -- drop the hooks + perform acs_sc_impl_alias__delete ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''GetMyName'' + ); + + perform acs_sc_impl_alias__delete ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''GetPrettyName'' + ); + + + perform acs_sc_impl_alias__delete ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''Link'' + ); + + perform acs_sc_impl_alias__delete ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''AddSelfToPage'' + ); + + perform acs_sc_impl_alias__delete ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''Show'' + ); + + perform acs_sc_impl_alias__delete ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''Edit'' + ); + + perform acs_sc_impl_alias__delete ( + ''portal_datasource'', + ''wikipedia_portlet'', + ''RemoveSelfFromPage'' + ); + + -- Drop the binding + perform acs_sc_binding__delete ( + ''portal_datasource'', + ''wikipedia_portlet'' + ); + + -- drop the impl + perform acs_sc_impl__delete ( + ''portal_datasource'', + ''wikipedia_portlet'' + ); + + return 0; +end;' language 'plpgsql'; + +select inline_1(); +drop function inline_1(); + Index: openacs-4/packages/wikipedia-portlet/tcl/wikipedia-portlet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/tcl/wikipedia-portlet-procs.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/tcl/wikipedia-portlet-procs.tcl 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,76 @@ +ad_library { +} + +namespace eval wikipedia_portlet { + + ad_proc -private get_my_name { + } { + return "wikipedia_portlet" + } + + ad_proc -private my_package_key { + } { + return "wikipedia-portlet" + } + + ad_proc -public get_pretty_name { + } { + return "#wikipedia-portlet.pretty_name#" + } + + ad_proc -public link { + } { + return "" + } + + ad_proc -public add_self_to_page { + {-portal_id:required} + {-page_name ""} + {-package_id:required} + {-extra_params ""} + {-force_region ""} + {-param_action:required} + } { + add the portlet element to the given portal + } { + return [portal::add_element_parameters \ + -portal_id $portal_id \ + -page_name $page_name \ + -pretty_name [get_pretty_name] \ + -portlet_name [get_my_name] \ + -key package_id \ + -value $package_id \ + -force_region $force_region \ + -extra_params $extra_params \ + -param_action $param_action + ] + } + + ad_proc -public remove_self_from_page { + {-portal_id:required} + {-package_id:required} + } { + Removes a wikipedia PE from the given page or the package_id of the + wikipedia package from the portlet if there are others remaining + + @param portal_id The page to remove self from + @param package_id + } { + portal::remove_element_parameters \ + -portal_id $portal_id \ + -portlet_name [get_my_name] \ + -value $package_id + } + + ad_proc -public show { + cf + } { + } { + portal::show_proc_helper \ + -package_key [my_package_key] \ + -config_list $cf \ + -template_src "wikipedia-portlet" + } + +} + Index: openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet-postgresql.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet-postgresql.xql 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,7 @@ +<?xml version="1.0"?> + +<queryset> +<rdbms><type>postgresql</type><version>7.1</version></rdbms> + +</queryset> + Index: openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet.adp 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,4 @@ + +<include src="/packages/wikipedia/www/search_portlet" whatsearch="@whatsearch;noquote@" xlang="@xlang;noquote@" see="@see;noquote@" page_num="@page_num;noquote@"> + + Index: openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/wikipedia-portlet/www/wikipedia-portlet.tcl 22 Jun 2006 09:08:28 -0000 1.1 @@ -0,0 +1,26 @@ +#dotlrn-wikipedia/www/wikipedia-portlet.tcl + +ad_page_contract { + The display logic for the wikipedia portlet + + @author Agustin Lopez (Agustin.Lopez@uv.es) + @version $Id: wikipedia-portlet.tcl,v 1.1 2006/06/22 09:08:28 darior Exp $ +} { + {whatsearch:trim ""} + {xlang:trim ""} + {see:trim "short"} + {page_num:trim "0"} +} -properties { +} + +if {$xlang eq ""} { + set xlang [string range [lang::user::site_wide_locale] 0 1] +} + +array set config $cf +set community_id [dotlrn_community::get_community_id] + +set user_id [ad_conn user_id] + +ad_return_template +