View · Index

Weblog

Filtered by category Non-Core Packages, 1 - 10 of 180 Postings (all, summary)

Chat

Created by Emmanuelle Raffenne, last modified by Gustaf Neumann 24 Nov 2023, at 06:41 PM

Package Specification Summary for Package: chat

Summary: Server based chat with an html and ajax client.
Description: Adapted by Peter Alberer 2006/03/25 to allow java and ajax to coexist. Adapted by Tekne 2006/03/01 to replace JAVA server with AJAX; make use of generalized chat class from xotcl-core. Adapted by Antonio Pisano circa 2016-2019 to reduce bloating and exploit xotcl ORM and server push capabilities. Java server was discontinued in the process. Adapted by Hector Romojaro Gomez 2018-2019 to give a modern look and feel, customizable skins and avatar picture.
Documentation: Package Documentation
Maturity: New Submission or Maturity Unknown
This package depends on: acs-kernel acs-tcl acs-templating xowiki
Packages that depend on chat: chat-includelet chat-portlet dotlrn-chat
Package parameters:
ChatSkin
Chat skin. Current options are 'classic', 'bubbles' and 'minimal'. (default bubbles, type string, scope instance)
LinkRegex
Regular expression to detect URLs in chat messages, creating html links accordingly. By default, it matches any string starting with http:// or https://. Please notice the backslash double escaping. (default (https?:\\/\\/[^\\s]+), type string, scope global)
UserColors
A list of colors to assign to usernames in the chat (default #006400 #0000ff #b8860b #bdb76b #8b0000, type string, scope instance)


Bug Tracker Summary for Package: chat

Open Bugs: 1
All Tracked Issues: 5
Latest Bug Opened: 2006-04-05 Ajax chat English language catalog incomplete
Latest Bug Fixed: 2015-07-25 Russian localization for package chat(HEAD).
Top Bug Submitters: Ryan Gallimore (3) Joel Aufrecht (1) Vlad V (1)
Top Bug Fixers: Gustaf Neumann (4)


Code Metrics Summary for Package: chat

# Tcl Procs 26
# Tcl Lines 1079
# Tcl Blank Lines 127
# Tcl Comment Lines 67
# Automated Tests 0
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 65 (blank 12 comments 12) ORA: 69 (blank 12 comments 12)
# ADP pages 18
# ADP lines 359
# Include pages (chat/lib/) 2
# Documentation pages 0 (Package Documentation)
# Documentation lines 0
Browse Source API-browser
Github Repository: https://github.com/openacs/chat/tree/oacs-5-10

 

The chat package is currently using two different chat engines:

  1. The Java applet and the Java chat server, or
  2. the Ajax based chat class from xotcl-core

If no xotcl-core is installed, one can only use the version with Java applet. If xotcl-core is installed, one has to option to choose between both engines via parameter.

In essence, the Ajax based variant is the chat implementation from xowiki plus chat room management and a list of the currently connected users. Originally, the AJAX-based chat class (::xo::Chat) was developed for xowiki, but later moved to xotcl-core such that the chat package does not need a dependency on xotcl-core and xowiki.

Actually, the chat support in xowiki contains a different variety of AJAX based communication strategies:

  1. Polling mode (the web browser queries via AJAX in definable intervals the server, and checks, if there is some new information available), and
  2. Streaming mode (the client opens a connection to the server, the server pushes the information back to the client. xowiki chat supports two different sub-modes:
    1. streaming of JSON objects via asynchronous AJAX sockets, or
    2. scripted streaming, where the browser loads HTML with embedded script tags in the background from a hidden iframe

Both (2a) and (2b) require libthread installed and NaviServer. However, the advantage of the streaming approaches is that they are much faster in the look and feel and that they are better scalable on sites with a high load. 2a works only on Firefox (not in current versions of IE or Safari) and has the advantage over 2b that the browser does not show the background activity (no spinning wheel in Firefox). 2b is more robust and works with Safari, IE and Firefox (the information about the browser support is from 2006, and most probably different today). Both streaming modes implement, what is sometimes called COMET.

 

When the chat package uses the ::xo::Chat, it uses it only in currently only polling mode, which has the least requirements. This has been as well tested with (Firefox, IE and Safari).

 

 

 

 

XoWiki

Created by Gustaf Neumann, last modified by Gustaf Neumann 24 Nov 2023, at 06:36 PM

XoWiki is a wiki implementation for OpenACS implemented based on xotcl-core. Instead of trying to implement the full set of wiki markup commands in systems like MediaWiki, XoWiki is based on a rich text editor and focuses more on integration with OpenACS (e.g. categories, general comments, adp-includes, ad-substitution of template variables). XoWiki combines aspects of wikis (ease of page-creation) with aspects of a content management system (revisions, reusable content, multiple languages, page templates).

XoWiki provides functionalities of enterprise wiki systems (such as combining structured with unstructured information, providing security policies, etc.). XoWiki is reused in several other packages such as XoWiki Content flow, S5 or  the Learning Content Tool.

Documentation:

 


Package Specification Summary for Package: xowiki

Summary: A xotcl-based enterprise wiki system with multiple object types
Description: <pre> XoWiki is a Wiki implementation for OpenACS in XOTcl. Instead of trying to implement the full set of Wiki markup commands of systems like MediaWiki, XoWiki is based on a rich text editor and focuses more on integration with OpenACS (e.g. categories, general comments, ADP-includes). XoWiki combines aspects of wikis (ease of page-creation) with aspects of a content management system (revisions, re-usable items, multiple languages). Furthermore, XoWiki allows one to define different types of links such one could define book-structures (where a navigation structure could be built on the fly) or glossaries with different kind of word relationships (like synonyms, etc.). XoWiki supports pages in multiple languages and is localized. Some features: - cross language links - inclusion of ADP pages - nesting of Wiki-pages - large set of includable content (includelets) - search - tags - categories - RSS - weblog - podcasts - notifications - web 2.0 gadgets (digg, delicious, my yahoo) - audio embedding - different appearances (template_file) - book-structures - prototype pages - import/export - virtual presence - analysis of collaboration networks - forms - named/unnamed pages - various security policies </pre>
Maturity: Mature
This package depends on: xotcl-core acs-datetime acs-kernel acs-tcl acs-templating acs-subsite acs-lang richtext-ckeditor4 categories file-storage general-comments acs-automated-testing
Packages that depend on xowiki: chat content-portlet eduwiki learning-content learning-content-portlet pages s5 xolirc xowf xowiki-includelet xowiki-portlet
Package parameters:
CacheSize
Size of the xowiki_cache (default 400000, type number, scope global)
MenuBar
Activate experimental menubar stuff (default 0, type number, scope instance)
MenuBarSymLinks
Activate experimental menubar stuff (default 0, type number, scope instance)
PackagePath
Space delimited names of local URL paths pointing to xowiki instances from where this instance should inherit pages (example: /xowiki /public/wiki) (default , type string, scope instance)
PreferredCSSToolkit
Use either "yui", or "bootstrap", or "default". The latter one lets the value according to the theme. (default default, type string, scope global)
PreferredRichtextEditor
Preferred richtext editor, such as: xinha, ckeditor, ckeditor4 (default) or wym (default ckeditor4, type string, scope global)
extra_css
One or more additional css file for this Instance (default , type string, scope instance)
hstore_max_value_size
When hstore is activate, don't store entries larger than this size in the hkey. This makes it possible to produce smaller hkey indices and to use e.g. GIN, which has a size limit of 2K. Set to 0 to disable the size limit (default 2000, type number, scope global)
parameter_page
::xowiki::FormPage to search for parameters. The page name has to contain a language prefix and can refer to a different xowiki instance. Example: //xowiki/en:xowiki-standard-parameter (default , type string, scope instance)
security_policy
Define the valid operations for different kind of users. Currently, two policies are predefined: ::xowiki::policy1 and ::xowiki::policy2. Policy1 requires for all destructive operations (deletes, delete_revision) and programmatical operations (involving tcl code, e.g. editing the ::xotcl::Objects) package admin rights, for reindex site wide admin right). Policy 2 requires also for destructive operations site wide admin rights. (default ::xowiki::policy1, type string, scope instance)
template_file
Name of the ADP file to be used for viewing xowiki pages. The default value is 'view-default'. Alternatively, one can use 'view-book' to view pages in book style (needs page_ordering) or e.g. 'oacs-view' for providing a view with the category-tree on the left, or any other tailored view (default view-default, type string, scope instance)
top_includelet
Specify an xowiki includelet (defined in ::xowiki::includelet::*) to be included on top over every pages. In order or add e.g. on each page of this wiki instance a listing of the users currently active in this xowiki instance, set the value of this parameter e.g. to 'presence -interval "10 minutes"'. The valid parameters are defined by the xowiki includlets. (default presence -interval "10 minutes", type string, scope instance)
use_hstore
Use hstore for accessing instance attributes. Create index for existing values via ::xowiki::hstore::update_form_instance_item_index -package_id $package_id (default 0, type number, scope instance)
Description: PackageDescription
Description of the Package. This description will appear for example in the Description of the default RSS feed for this package (default , type text, scope instance)
Description: PackageTitle
Title of the Package; this title will appear for example in the default RSS feed for this package. (default , type string, scope instance)
Form: autoname
Automatically name items of this instance (default 0, type number, scope instance)
Form: display_page_order
Display page_order attribute (Section) in edit forms if possible. (default 1, type number, scope instance)
Options: include_in_google_sitemap_index
Include the package in the google sitemap index (default 1, type number, scope instance)
Options: my_yahoo_publisher
Name of the publisher, when posting URLs to my yahoo (use in connection with with_yahoo_publisher) (default , type string, scope instance)
Options: production_mode
When this parameter is set, new pages are created in a "production" state, where they are not visible to users. These page have to be released via the admin pages. Notification and syndication is decativated, while pages are under "production". (default 0, type number, scope instance)
Options: show_page_references
If enabled it shows on a page view the pages that reference it (default 1, type number, scope instance)
Options: show_per_object_categories
If enabled it shows on a page view the categories assigned to this object (default 1, type number, scope instance)
Options: with_delicious
Add a delicious button to the page (default 0, type number, scope instance)
Options: with_digg
Add a button to submit article to digg (default 0, type number, scope instance)
Options: with_general_comments
use general comments package (default 1, type number, scope instance)
Options: with_notifications
Allow the user to register notifications (default 1, type number, scope instance)
Options: with_tags
allow user to provide tags to pages (default 1, type number, scope instance)
Options: with_user_tracking
track page view usage per user (default 1, type number, scope instance)
Options: with_yahoo_publisher
When specified, a button for adding the content to my.yahoo.com is added (default 0, type number, scope instance)
Pages: index_page
name of the page to be shown when the package instance is browsed (e.g. en:index) (default , type string, scope instance)
Pages: weblog_page
name of the page to show weblog (when clicking on tags) (default en:weblog, type string, scope instance)
URL: fallback_languages
Specify space delimited two character codes for checking default languages. When this parameter is nonempty, try to get the page in the specified languages as fallback rather than offering a link for creation of a page in the requested locale. Per default this parameter is empty. (default , type number, scope instance)
URL: package_prefix
Part of the URL used before language and page name. This setting is used, when a URL is computed. Per default, the package_prefix is determined by the side not. When for example a default xowiki instance is used as start page of OpenACS, the package_prefix can be set to / (default , type string, scope instance)
URL: subst_blank_in_name
normalize names of pages in a media wiki style. Most dominantly, spaces are turned into blanks. (default 1, type number, scope instance)
URL: use_connection_locale
When this flag is set, per-user specific information is used to determine the default language. Users with different language preferences will see under the same url different content. Per default this flag is turned off, and the package or system wide locale is used. (default 0, type number, scope instance)
xinha: WidgetSpecs
Specify pairs of "pagename,fieldname" followed by a Tcl list which is used as a widget spec for ad_form. "pagename" and "fieldname" can contain wild card characters. The following rather complex widget-specs are from OpenACS.org: *,text {richtext(richtext),nospell,optional {label Content} {html {style {width: 100%}}} {options {editor xinha plugins {Stylist OacsFs} height 350px javascript { xinha_config.toolbar = [ ['popupeditor', 'bold','italic','createlink','insertimage','separator'], ['killword','removeformat'] ]; xinha_config.stylistLoadStylesheet('/resources/xowiki/examples/xinha-mc-styles.css', {'p.angabe' : 'Aufgabenstellung', 'p.loesungshinweis' : 'Lösungshinweis', 'li.correct_choice' : 'Richtige Antwort', 'li.incorrect_choice' : 'Falsche Antwort'}); }}}} (default , type text, scope instance)


Bug Tracker Summary for Package: xowiki

Open Bugs: 3
All Tracked Issues: 54
Latest Bug Opened: 2018-12-12 Unnecessary dependency between folders includelet and MenuBar
Latest Bug Fixed: 2021-02-06 Incorrect template_file parameter results in error: No script or template found for page '/'.
Top Bug Submitters: Robert Taylor (10) Ryan Gallimore (9) Michael Aram (9) Carl Robert Blesius (6) Malte Sussdorff (3)
Top Bug Fixers: Gustaf Neumann (49) Stan Kaufman (2) Malte Sussdorff (1)


Code Metrics Summary for Package: xowiki

# Tcl Procs 44
# Tcl Lines 36559
# Tcl Blank Lines 3683
# Tcl Comment Lines 7497
# Automated Tests 21
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 0 (blank 1 comments 0) ORA: 0 (blank 1 comments 0)
# ADP pages 18
# ADP lines 1631
# Include pages (xowiki/lib/) 6
# Documentation pages 0
# Documentation lines 0
Browse Source API-browser
Github Repository: https://github.com/openacs/xowiki/tree/oacs-5-10

Available Includelets

The following includelets can be used in a page
  • {{LTI-LaunchButton -launch_button_label Join Meeting -launch_button_title Click to join -title "" -presentation window}}

  • {{activity-graph -max_edges 70 -cutoff 0.1 -max_activities:integer 100 -show_anonymous message}}

    Include an activity graph

  • {{available-formfields -flat:boolean false}}

    List the available form field types of this installation.

  • {{available-includelets}}

    List the available includelets of this installation.

  • {{book -category_id -menu_buttons edit -folder_mode false -locale "" -range "" -allow_reorder "" -orderby page_order,asc -with_footer false -publish_status ready}}

    Show contents in book mode.

  • {{bookmarklet-button -siteurl "" -label ""}}

    Include bookmarklet button that makes it easy to add the current page as a bookmark in the browser of the client.

  • {{categories -tree_name "" -tree_style:boolean 1 -no_tree_name:boolean 0 -count:boolean 0 -summary:boolean 0 -locale "" -open_page "" -order_items_by title,asc -style mktree -category_ids "" -parent / -except_category_ids "" -allow_edit false -ordered_composite}}

    List the specified category tree.

  • {{categories-recent -max_entries:integer 10 -tree_name "" -locale "" -pretty_age off}}

    Display recent entries by categories.

  • {{chat -title "" -chat_id "" -mode "" -path "" -skin -login_messages_p -logout_messages_p -avatar_p -timewindow}}

    Include a chat in the current page

  • {{chat_room -chat_id -mode:optional "" -path:optional "" -skin:optional ""}}

    Include a chat room

  • {{child-resources -skin:optional yui-skin-sam -show_types ::xowiki::Page,::xowiki::File,::xowiki::Form,::xowiki::FormPage -regexp:optional -language_specific:boolean false -with_subtypes:boolean,optional false -orderby:token,optional last_modified,desc -publish_status:wordchar ready -view_target "" -html-content -parent . -columns objects edit publish_status object_type name last_modified mod_user duplicate delete -hide "" -menubar ""}}

    Include the content of the current folder somewhat similar to explorer.

  • {{collab-graph -max_edges 70 -cutoff 0.1 -show_anonymous message -user_id}}

    Include a collaboration graph

  • {{community-link -text "" -url ""}}

    Include a link to the community including the current page. This includelet is designed to work with dotlrn.

  • {{composite-form -edit_links:boolean false -pages "" -ordered_pages}}

    Create a form from the selection

  • {{copy-item-button -page_id -alt copy -book_mode false}}

    Button to copy a page

  • {{countdown-timer -target_time "" -audio_alarm true}}

    Countdown timer

  • {{create-item-button -page_id -alt new -book_mode false}}

    Button to create a new page based on the current one

  • {{creation-date -source "" -format %m-%d-%Y}}

    Include the creation date of the current or specified page in the provided format.

  • {{current-irc-log -date ""}}

  • {{delete-item-button -page_id -title Delete -alt delete -book_mode false}}

    Button to delete the current or a different page

  • {{delicious -description "" -tags "" -url}}

    Add a button to submit article to delicious.

  • {{digg -description "" -url}}

    Add a button to submit article to digg.

  • {{edit-item-button -page_id -title Edit -alt edit -book_mode false -link "" -target ""}}

    Button to edit the current or a different page

  • {{exam-top-includelet -countdown_audio_alarm true -target_time "" -url_poll "" -url_dismiss "" -poll_interval 5000}}

    This is the top includelet for the in-class exam, containing a countdown timer and the personal notifications includelet

  • {{flowplayer -mp4:required,nohtml}}

    Include an mp4 image using flowplayer

  • {{folders -show_full_tree false -context_tree_view false}}

    List the folder tree of the current instance

  • {{form-menu -form_item_id:integer -parent_id -form -buttons new answers -button_objs -return_url}}

    Include a form menu for the specified Form

  • {{form-stats -form -parent_id -property _state -orderby count,desc -renderer table}}

    Include form statistics for the specofied Form page.

  • {{form-usages -form_item_id:integer,1..n -form -parent_id -package_ids "" -orderby _raw_last_modified,desc -view_field _name -publish_status all -field_names -hidden_field_names _last_modified -extra_form_constraints "" -inherit_from_forms "" -category_id -unless -where -extra_where_clause "" -csv true -voting_form -voting_form_form "" -voting_form_anon_instances t -generate -with_form_link true -with_categories -wf -bulk_actions "" -buttons edit delete -renderer "" -return_url -date_format -with_checkboxes:boolean false}}

    Show usages of the specified form.

  • {{get -variable -form_variable -source ""}}

    Get an instance variable from the current or from a different page.

  • {{graph}}

  • {{gravatar -email:required -size 80}}

    Include gravatar picture for the specified email

  • {{html-file -title "" -extra_css "" -levels 0 -file:required}}

    Include the specified HTML file

  • {{iframe -title "" -url:required -width 100% -height 500px}}

    Include an iframe containing the specified URL

  • {{item-button}}

  • {{jquery-carousel}}

    Display a sequence of pages via jquery-carousel, based on book includelet.

  • {{jquery-cloud-carousel}}

    Display a sequence of pages via jquery-cloud-carousel, based on book includelet.

  • {{jquery-infinite-carousel}}

    Display a sequence of pages via jquery-infinite-carousel, based on book includelet.

  • {{jquery-spacegallery}}

    Display a sequence of pages via jquery-spacegalleryl, based on book includelet.

  • {{kibana -chart openacs-status-codes -from now-24h -to now -hash "" -width:integer 800 -height:integer 400}}

    Include a Kibana chart identified by the provided hash

  • {{last-visited -max_entries:integer 20}}

    Display last visited pages.

  • {{launch-bigbluebutton}}

  • {{launch-jupyter}}

  • {{launch-zoom}}

  • {{link-with-local-return-url -text "" -url ""}}

    Insert a link with extra return URL pointing the current object. This is particularly useful in cases, where a return URL must be created for a page that does not yet exist at time of definition (e.g. for link pointing to concrete workflow instances)

  • {{most-frequent-visitors -max_entries:integer 15}}

    List the most frequent visitors.

  • {{most-popular -max_entries:integer 10 -interval}}

    Display most popular pages of this wiki instance.

  • {{my-categories -summary 1}}

    List the categories associated with the current page.

  • {{my-general-comments}}

    List the general comments available for the current page.

  • {{my-references}}

    List the pages which are referring to the current page.

  • {{my-refers}}

    List the pages which are referred to the current page.

  • {{my-tags -summary 1}}

    List the tags associated with the current page.

  • {{my-yahoo-publisher -publisher "" -rssurl}}

    Name of the publisher, when posting URLs to my yahoo (use in connection with with_yahoo_publisher).

  • {{personal-notification-messages -url_poll "" -url_dismiss "" -poll_interval 5000}}

    Personal notification messages This includelet can be used for personal messaging, where a sender can send messages to a single user in a single applications (e.g. in an exam), where the user has to acknowledge every single message to make it disappear (current implementation). The messages are not persisted (current implementation).

  • {{presence -interval 10 minutes -max_users:integer 40 -show_anonymous summary -page}}

    Show users actively in the wiki.

  • {{random-form-page -form:required -publish_status ready -expires 600}}

    Include random form page (instance of the specified form)

  • {{recent -max_entries:integer 10 -allow_edit:boolean false -allow_delete:boolean false -pretty_age off}}

    Display recent modified entries.

  • {{references-graph -folder . -page "" -link_type link -rankdir LR -fontsize 12}}

    Include a graph of the (partial) link structure in a wiki, starting either with a page or a folder. When a page is provided, the local link structure of this page is visualized (including incoming and outgoing links of the page; e.g. -page "." for the current page). Alternatively, the content of a folder can be shown.

  • {{rss-button -span 10d -name_filter -entries_of -title}}

    Include an RSS button referring to pages of the specified time span.

  • {{rss-client -url:required -max_entries:integer 15}}

    Include RSS content

  • {{s5 -category_id -slideshow:boolean false -pagenr 0 -style standard -menu_buttons view edit copy create delete}}

  • {{selection -edit_links:boolean true -pages "" -ordered_pages "" -source -publish_status ready -menu_buttons edit -range ""}}

    Provide a selection of pages

  • {{set-parameter}}

    Set a parameter accessible to the current page (for certain tailorings), accessible in the page via e.g. the query parameter interface.

  • {{slidy}}

    Display a sequence of pages via W3C slidy, based on book includelet

  • {{tags -limit:integer 20 -summary:boolean 0 -popular:boolean 0 -page}}

    Display specified tags.

  • {{timeline -user_id -data timeline-data -interval1 DAY -interval2 MONTH}}

    Include a timeline of changes (based on yahoo timeline API)

  • {{toc -style "" -renderer "" -open_page "" -book_mode false -folder_mode false -ajax false -expand_all false -remove_levels 0 -category_id -locale "" -orderby "" -source "" -range "" -allow_reorder "" -include_in_foldertree true -CSSclass_top_ul "" -CSSclass_ul ""}}

    Show table of contents of the current wiki. The "toc" includelet renders the page titles of the current files based on the value of the "page_order" attributes. Only those pages are rendered that have a nonempty "page_order" field.

  • {{unread-items -max_entries:integer 20}}

    List unread items.

  • {{unresolved-references}}

    List the pages with unresolved references in the current xowiki/xowf package. This is intended for use by admins.

  • {{user-timeline -user_id -data timeline-data -interval1 DAY -interval2 MONTH}}

    Include a timeline of changes of the current or specified user (based on yahoo timeline API)

  • {{view-item-button -page_id -title View -alt view -link "" -book_mode false}}

    Button to view the current or a different page

  • {{vspace -height "" -width ""}}

  • {{wf-todo -workflow "" -user_id -ical 0 -max_entries}}

  • {{yui-carousel -title "" -item_size 600x400 -image_size -num_visible 1 -play_interval 0 -auto_size 0 -folder -glob "" -form ""}}

    Include YUI carousel showing the pages of the specified or current folder.

Available Formfield Classes

The following formfield types can be used in xowiki::Forms
FormField (abstract, superclass xo::tdom::Object)
  • -CSSclass form-control
  • -form_button_CSSclass btn btn-default
  • -form_button_wrapper_CSSclass
  • -form_help_text_CSSclass help-block
  • -form_item_wrapper_CSSclass form-group
  • -form_label_CSSclass
  • -form_widget_CSSclass

Base FormField class. FormFields are objects, which can be outputted as well in ad_forms or asHTML included in wiki pages. FormFields support: - validation - help_text - error messages - internationalized pretty_values and inherit properties of the original datatypes via slots (e.g. for boolean entries). FormFields can be subclassed to ensure tailor-ability and high reuse. todo: at some later time, this could go into xotcl-core.

XOTcl Core

Created by Gustaf Neumann, last modified by Gustaf Neumann 24 Nov 2023, at 06:31 PM

What is xotcl-core

xotcl-core is an OpenACS package, which provides base functionality for OpenACS applications using XOTcl. The xotcl-core package is used by several other OpenACS packages such as the XOTcl request monitor, XoWiki, XoWiki Content Flow, S5 or the Learning Content Tool.

Install xotcl-core

First, get xotcl-core from the OpenACS repository:

cd /tmp
cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot co openacs-4/packages/xotcl-core

Move xotcl-core to the directory, where your OpenACS packages are stored. We assume, this directory is /usr/local/openacs-4/packages
 

mv /tmp/openacs-4/packages/xotcl-core /usr/local/openacs-4/packages

 Next, go to acs-admin/apm (http://YOURSERVER/acs-admin/apm/), choose "install-packages" and install XOTcl Core. Finally, restart the server.

svc -t /service/${yourservice}

Now you can browse  http://YOURSERVER/xotcl

Functionality of xotcl-core

xotcl-core defines several classes for

  • library dependencies
  • package management
  • debugging
  • security and policy management
  • HTTP client and server functionality
  • Object Relational Database Interface
  • ical formatting
  • cluster management
  • chat handlers

and several utilities.

Tutorial xotcl-core

 See slides


Code metrics and Package Description

 

Package Specification Summary for Package: xotcl-core

Summary: XOTcl library functionality (e.g. thread handling, online documentation, Generic Form and List Classes)
Description: <pre> This component contains some core functionality for OpenACS applications using XOTcl. It includes XOTcl thread handling for OpenACS (supporting persistent and volatile threads) and a definitions for documenting XOTcl object, classes and methods integrated with the API-browser of OpenACS. Documented procs and instproc an be created using the methods ad_proc and ad_instproc. This component provides as well an XOTcl Object and Class browser, as well as means to control the recreation of objects and classes when components are reloaded. Features: - oo-abstraction with caching (acs-objects and cr-items/revisions) - single and multi instantiations (turn all tuples into objects) - object life-time support (automatic cleanup when needed after request) - proxy objects for stored procedures/functions (PostgreSQL and Oracle) - db-abstraction for PostgreSQL and Oracle (e.g. query composition) - context-management: context objects for (connections and db-queries) - security policies - GUI and DOM support (via tdom) - support for XOTcl and NX </pre>
Maturity: Mature
This package depends on: acs-kernel acs-bootstrap-installer acs-templating acs-api-browser acs-content-repository acs-tcl acs-admin
Packages that depend on xotcl-core: richtext-ckeditor5 rrd-tool xooauth xotcl-request-monitor xowf xowiki
Package parameters:
NslogRedirector
Allow redirections of nslog. The redirector filters ns_log messages and sends these not only to the error log (standard behavior) but also to ds_comments in the developer support. This way, a developer can view the log messages for the current request directly in the browser when the developer support is activated, without having to watch the log file. The value of 0 means "no redirecting" (deactivation), 1 means "redirecting errors", 2 means "redirect errors and notices" (default 0, type number, scope instance)
XOTclObjectCacheSize
Size of the ns_cache xotcl_object_cache (used for caching XOTcl objects fetched from the database) (default 400000, type number, scope instance)
XOTclObjectTypeCacheSize
Size of the ns_cache xotcl_object_type_cache (used for caching types of XOTcl objects) (default 10000, type number, scope instance)

Bug Tracker Summary for Package: xotcl-core

Open Bugs: 6
All Tracked Issues: 19
Latest Bug Opened: 2019-09-12 Get all children using with_descendants in CrClass->instance_select_query
Latest Bug Fixed: 2020-05-12 Move is_package_root_folder up in class hierarchy to CrItem.
Top Bug Submitters: Michael Aram (16) Avni Khatri (1) Claudio Pasolini (1) Vlad V (1)
Top Bug Fixers: Gustaf Neumann (14)

Code Metrics Summary for Package: xotcl-core

# Tcl Procs 29
# Tcl Lines 16145
# Tcl Blank Lines 1449
# Tcl Comment Lines 3534
# Automated Tests 13
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 0 (blank 1 comments 0) ORA: 0 (blank 1 comments 0)
# ADP pages 4
# ADP lines 90
# Include pages (xotcl-core/lib/) 1
# Documentation pages 0
# Documentation lines 0
Browse Source API-browser
Github Repository: https://github.com/openacs/xotcl-core/tree/oacs-5-10
 


The OpenACS package xotcl-core requires in versions of OpenACS before 5.3 the following patches for the documentation procs and the bootstrap installer:

cd /tmp
wget http://media.wu-wien.ac.at/download/acs-api-documentation-procs.patch
wget http://media.wu-wien.ac.at/download/acs-bootstrap-installer.patch

To apply these patches, go to the directory, where the OpenACS packages are stored. We assume, this directory is /usr/local/openacs-4/packages. 
 

cd /usr/local/openacs-4/packages
 patch -p 0 < /tmp/acs-api-documentation-procs.patch
 patch -p 0 < /tmp/acs-bootstrap-installer.patch

Both patches do not harm in case XOTcl is not installed. Now reload these packages or restart the server.

xooauth

Created by Gustaf Neumann, last modified by Gustaf Neumann 24 Jul 2023, at 02:09 PM

Package Specification Summary for Package: xooauth

Summary: XOTcl based OAuth implementation and OAuth based REST interfaces for OpenACS
Description: This package aims to provide a comprehensive OAuth implementation for OpenACS, i.e. OAuth core, OAuth client, OAuth server. Probably, just the core part is ready for production use, the other functions are currently deactivated. This package was developed originally by Knowledge Markets https://km.at/
Maturity: New Submission or Maturity Unknown
This package depends on: acs-tcl xotcl-core xowf
Packages that depend on xooauth: None
Package parameters: None

Bug Tracker Summary for Package: xooauth

There is no package with the name "xooauth" known to bug-tracker.

Code Metrics Summary for Package: xooauth

# Tcl Procs 2
# Tcl Lines 4017
# Tcl Blank Lines 401
# Tcl Comment Lines 1169
# Automated Tests 0
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 0 (blank 1 comments 0) ORA: 0 (blank 1 comments 0)
# ADP pages 3
# ADP lines 84
# Include pages (xooauth/lib/) 2
# Documentation pages 0
# Documentation lines 0
Browse Source API-browser
Github Repository: https://github.com/openacs/xooauth/tree/oacs-5-10

This package was developed to provide a comprehensive OAuth implementation for OpenACS based on the XOTcl infrastructure. The package contains OAuth core, OAuth client, OAuth server. Currently, just the core part is ready for production use, the other functions are currently deactivated.

The package can be used to

The xooauth component was originally developed by Knowledge Markets.

xowf (XoWiki Workflow)

Created by Gustaf Neumann, last modified by Gustaf Neumann 02 Oct 2021, at 10:41 AM

XoWiki Content Flow - an XoWiki based workflow system implementing state-based behaviour of wiki pages and forms (short intro).


Package Specification Summary for Package: xowf

Summary: XoWiki Content Flow - an XoWiki based workflow system implementing state-based behavior of wiki pages and forms
Description:
Maturity: Mature
This package depends on: xowiki xotcl-core acs-tcl acs-automated-testing acs-templating
Packages that depend on xowf: xooauth
Package parameters:
parameter_page
::xowiki::FormPage to search for parameters. The page name has to contain a language prefix and can refer to a different xowiki instance. Example: //xowiki/en:xowiki-standard-parameter (default , type string, scope instance)
use_hstore
Use hstore for accessing instance attributes. Create index for existing values via ::xowiki::hstore::update_form_instance_item_index -package_id $package_id (default 0, type number, scope instance)

Bug Tracker Summary for Package: xowf

There is no package with the name "xowf" known to bug-tracker.


Code Metrics Summary for Package: xowf

# Tcl Procs 7
# Tcl Lines 12264
# Tcl Blank Lines 1094
# Tcl Comment Lines 3242
# Automated Tests 6
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 0 (blank 1 comments 0) ORA: 0 (blank 1 comments 0)
# ADP pages 1
# ADP lines 32
# Include pages (xowf/lib/) 2
# Documentation pages 0
# Documentation lines 0
Browse Source API-browser
Github Repository: https://github.com/openacs/xowf/tree/oacs-5-10
 

xowf depends on xowiki.

Workflow Examples:

  • A two-chambers legislative process, loosely based on the Italian one. A law proposal is submitted to the first chamber, then passed to the second one. The text keeps being passed between the two chambers until no amendments (changes) are made. Once this condition is met, the law is approved. Workflow example of a legislative process

 

Contacts Lite

Created by Gustaf Neumann, last modified by Gustaf Neumann 23 Jan 2021, at 01:07 AM

Package Specification Summary for Package: contacts-lite

Summary:
Description: This package is unknown (not available at this site)
Maturity: 0
This package depends on: None
Packages that depend on contacts-lite: None
Package parameters: None

Bug Tracker Summary for Package: contacts-lite

Open Bugs: 0
All Tracked Issues: 2
Latest Bug Opened: This package has no open bugs.
Latest Bug Fixed: 2021-01-23 Expressions like {value {<i>$contact_info</i>}}} do not work.
Top Bug Submitters: Maurizio Martignano (2)
Top Bug Fixers: Gustaf Neumann (2)

Code Metrics Summary for Package: contacts-lite

# Tcl Procs 0
# Tcl Lines 0
# Tcl Blank Lines 1
# Tcl Comment Lines 0
# Automated Tests 0
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 0 (blank 1 comments 0) ORA: 0 (blank 1 comments 0)
# ADP pages 0
# ADP lines 0
# Include pages (contacts-lite/lib/) 0
# Documentation pages 0
# Documentation lines 0
Browse Source Not installed
Github Repository: https://github.com/openacs/contacts-lite/tree/oacs-5-10

 

 

xowf plugin for Monaco code editor

Created by Gustaf Neumann, last modified by Gustaf Neumann 11 Aug 2020, at 09:40 AM

Code metrics and Package Description

Package Specification Summary for Package: xowf-monaco-plugin

Summary:
Description: This package is unknown (not available at this site)
Maturity: 0
This package depends on: None
Packages that depend on xowf-monaco-plugin: None
Package parameters: None

Bug Tracker Summary for Package: xowf-monaco-plugin

There is no package with the name "xowf-monaco-plugin" known to bug-tracker.

Code Metrics Summary for Package: xowf-monaco-plugin

# Tcl Procs 0
# Tcl Lines 0
# Tcl Blank Lines 1
# Tcl Comment Lines 0
# Automated Tests 0
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 0 (blank 1 comments 0) ORA: 0 (blank 1 comments 0)
# ADP pages 0
# ADP lines 0
# Include pages (xowf-monaco-plugin/lib/) 0
# Documentation pages 0
# Documentation lines 0
Browse Source Not installed
Github Repository: https://github.com/openacs/xowf-monaco-plugin/tree/oacs-5-10
 

Calendar

Created by Emmanuelle Raffenne, last modified by Gustaf Neumann 01 May 2020, at 11:20 AM

Package Specification Summary for Package: calendar

Summary: Personal and shared event calendars.
Description: Manage group and shared calendars with download.
Documentation: Package Documentation
Maturity: Mature
This package depends on: attachments acs-datetime acs-events acs-lang notifications ref-timezones acs-tcl acs-templating
Packages that depend on calendar: calendar-includelet calendar-portlet evaluation project-manager
Package parameters:
Attachments
Allow Files to be Uploaded (default 0, type number, scope instance)
DefaultView
The default list for this instance of calendar: one of day, list, week, month. Defaults to day. (default day, type string, scope instance)
ListView_DefaultPeriodDays
Period of time that is shown in the calendar by default [in days]. Can be changed by admin for each community. Defaults to 30. (default 30, type number, scope instance)


Bug Tracker Summary for Package: calendar

Open Bugs: 14
All Tracked Issues: 96
Latest Bug Opened: 2018-04-02 orphan acs_activities and recurrences
Latest Bug Fixed: 2018-03-20 Calendar fails automated test: Test case acs_tcl__tcl_file_syntax_errors.
Top Bug Submitters: Nima Mazloumi (10) Caroline Meeks (10) Dirk Gomez (6) Carl Robert Blesius (6) Vinod Kurup (5)
Top Bug Fixers: Dirk Gomez (43) Emmanuelle Raffenne (12) Lars Pind (9) Peter Marklund (5) Don Baccus (4) Deirdre Kane (4) Gustaf Neumann (4)


Code Metrics Summary for Package: calendar

# Tcl Procs 55
# Tcl Lines 1604
# Tcl Blank Lines 270
# Tcl Comment Lines 170
# Automated Tests 4
# Stored Procedures PG: 10 ORA: 12
# SQL Lines PG: 849 (blank 127 comments 139) ORA: 914 (blank 144 comments 160)
# ADP pages 18
# ADP lines 655
# Include pages (calendar/lib/) 0
# Documentation pages 3 (Package Documentation)
# Documentation lines 653
Browse Source API-browser
Github Repository: https://github.com/openacs/calendar/tree/oacs-5-10

 

Suggestions for improvement (from /forums/message-view?message_id=432244 ):

  • different colors for different calendar sources
  • easy and nice printout of week and monthly calendar
  • Possibility to link one calendar item to many classes or community on creation or editing
  • Attach files
  • Change of repeating events after creation (if you have a different repeating sequence there is no way of changing the sequence)
  • Site-wide calendar for holidays
  • Department-wide calendars.

Sync contacts with contact managers, palm pda's etc.

Note I see a small potential issue. Within one calendar it makes sense to color code by calendar types. When using dotLRN or otherwise aggregating calendars it makes sense to color code by calendar_id (source). It probably never makes sense to do it both ways on the same site. We may need to think this through. 


Text taken from Dirk document (2004)

Maintained by Dirk Gomez - last change on 22-Jan-2004.

I am tracking my work on calendar here. Please get in touch with me if you have comments.

Features Completed

  • Separated code and presentation
  • Notifications
  • Removed unused or duplicated code and database queries.
  • Proper use of OpenACS permissioning.

Features I am working on currently

  • Code clean up
  • Documentation of the data model
  • CSS/XHTML

Features I will be working on

  • The calendar view templates take a lot of parameters some of which require knowledge of the inner workings of the respective template: e. g. currently the calling templates passes in a url_template which determines whether an action on a particular item can be executed. I'll move this to being proper and understandable parameters like create_p or edit_p.
  • New parameter Collaborative Calendar: a parameter that allows every user of a community to add, edit, and delete events if set to true.
  • New parameter in DotLrn: parametrize whether to show calendar lists for a whole term.
  • Allow users to store calendar preferences for example the user default view. The calendar_preferences table already exists, yet isn't used at all.
  • Add a toggle: "Show all my events/Only this package's or community's events"
  • Use a site-wide categories package to do away with the calendar types and the multiple calendars per package.
  • Reminder - make it possible that a user sets a particular time on a calendar item to receive a reminder email
  • Multi-day events
  • iCal format compatible. Ideally, import/export to Outlook/iCalendar/etc.. via iCal format (by Jade)
  • Ability to map any sort of date information in a database to the calendar, this means tickets, bugs, etc. perhaps via a service contract (by Jade)
  • There should be any easy UI for specifying what is shown. Both the user and the admin should be able to select these things (the admin sets the range of what is possible, the user can select from those choices) (by Jade)
  • Events should be able to span more than a day. Ideally, the UI for this should look good. (by Jade)
  • An ability to be able to add data via the calendar as well. Anything that implements the service contract should allow you +to add information on that date as well. For example, add a ticket due that day, or add an event for that day, etc.. (by Jade)
  • The calendar needs to be printable (at least for where I work - Jade)
  • Desktop and Handheld support - cross-browser and cross-platform compatible (ryan-g2)
  • Filters by calendar, keyword, object (e.g. Show all bug deadlines) 
  • Public event submission (unauthenticated) approved by an admin (ryan-g2)
  • Invite people to events (ryan-g2)
    • auto-book invitees if preference enabled, otherwise, require confirmation
    • if there is a conflict among registered users' schedules, the systems suggests possible times to the inviter.
    • people external to the system can be invited.
  • Resource Scheduling - Booking (ryan-g2)
    • Schedule one resource (room, car, laptop) per calendar
    • Non-simultaneous booking (no overlapping times)
    • Book an item: suggest alternate times across multiple calendars if asset is unavailable.  Example: 5 Smart Cars for rent each have their own calendar; if all are booked from 10 - 11 AM, suggest 9-10 or 11-12 across all calendars.
    • Optional bill for booked time (connect with ecommerce module)

Data Model Suggestions

Don:
Calendar items should map arbitrary objects (perhaps only content items) to a given calendar and given acs-events. We shouldn't have to derive special types from cal item type in order to attach it to a calendar (nor should we have to duplicate content to attach it to two calendars as we do now) If we restricted the mapping to content items (i.e. calendar info some sort of content type) we could use the CR's ability to map a template to a given content type or item to make it possible for the calendar package to display calendar item details using that facility, giving the package adding something to the calendar control over how it is displayed. Much more general.

ryan-g2:
Is it possible to optionally link any acs_object to an acs_event object (event)? Examples:

  • People attached to a meeting event
  • Bug item attached to a deadline
  • Location attached to a meeting event [google maps integration]
  • Project item attached to a deadline
  • Simple time and description (for booking an asset) -- unattached to an object
  • Multiple objects: Rent a car C from Time A to Time B and pick it up at Location L (Event linked to two objects C and L). See zipcar.com

From above: "Use a site-wide categories package to do away with the calendar types and the multiple calendars per package."

 

Features I started work on

I'm listing stuff here on which I am already working, but whose completion is nowhere near finished and there is not even an estimation when it may be finished.

  • Integrate libical into AOLserver
  • Lift as much as possible from Brandeis' Calendar, see this forum thread

Interesting Links

Notes

 

June 12, 2006 - Solution Grove worked on an AJAX calendar month view that has colors by calendar_types, has mouse overs for item details for each date, and changes months without refreshing the pages. They hope to contribute it at some point. Contact Caroline or Hamilton from Solution Grove if you need an advanced copy.

Richtext CKEditor 4

Created by Gustaf Neumann, last modified by Gustaf Neumann 25 Apr 2019, at 09:54 AM

Package Specification Summary for Package: richtext-ckeditor4

Summary: Richtext editor plugin for integrating CKeditor 4 with acs-templating
Description:
Maturity: Mature
This package depends on: acs-templating acs-tcl attachments
Packages that depend on richtext-ckeditor4: xowiki
Package parameters:
SCAYT
Fully featured "Spell Check As You Type" based on WebSpellChecker.net. Please note that the spellchecked words are transferred to that site, so you might be cautious to activate this feature for confidential content. (default false, type string, scope instance)

Bug Tracker Summary for Package: richtext-ckeditor4

There is no package with the name "richtext-ckeditor4" known to bug-tracker.


Code Metrics Summary for Package: richtext-ckeditor4

# Tcl Procs 9
# Tcl Lines 627
# Tcl Blank Lines 90
# Tcl Comment Lines 127
# Automated Tests 0
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 0 (blank 1 comments 0) ORA: 0 (blank 1 comments 0)
# ADP pages 1
# ADP lines 11
# Include pages (richtext-ckeditor4/lib/) 1
# Documentation pages 0
# Documentation lines 0
Browse Source API-browser
Github Repository: https://github.com/openacs/richtext-ckeditor4/tree/oacs-5-10

In general, the CKEditor can be used via CDN (zero configuration, default) or via local files. One can use /acs-admin/ (section "Site-wide Service Administration" to download a version to your local site to reduce latency or to use local modifications. By default, the "standard" preset is downloaded. By altering the variable "ck_package" in packages/richtext-ckeditor4/tcl/richtext-procs, one can download other presets as well (see https://ckeditor.com/presets-all).

The CKEditor widget can be used at least in two scenarios: (a) as a richtext-widget or (b) within xowiki as a class of a form-field.

  • (a) Here is an example for the use of the richtext widget configured for ckeditor4, showing some options:
        text:richtext(richtext),nospell,optional 
        {label "CKEditor"}
        {html {rows 15 cols 50}}
        {options {
            editor ckeditor4
            plugins wsc
            extraAllowedContent "u;span{color}"}
        }
    

    This minimal example should work with the "standard" distribution of CKEditor and adds the "wsc" (Web Spell Checker) plugin, and allows the tag <u>u and <span style="color:...">...</span> to be used in the content. Otherwise, these flags are removed by the context filter of the editor (for details, see CKEditor documentation). Additional "options" are "skin" and "customConfig", where the latter refers to a JavaScript file which can be used for detailed configuration (for more details, see https://docs.ckeditor.com/#!/guide/dev_configuration).

    Note, that the usual constraints for richtext widgets holds like for all other richtext implementations (e.g. the editor will only be activated, if UseHtmlAreaForRichtextP is set to true).

  • (b) when used as a form-field within xowiki forms, there are detailed config options available: mode, displayMode, skin, toolbar, CSSclass, uiColor, allowedContent, customConfig, extraPlugins, extraAllowedContent, templatesFiles, templates, contentsCss, imageSelectorDialog, and additionalConfigOptions. A short introduction to form-fields is in http://alice.wu-wien.ac.at:8000/xowiki-doc/#forms. One should set the PreferredRichtextEditor (xowiki global parameter) to ckeditor4.

Boomerang Plugin

Created by Gustaf Neumann, last modified by Gustaf Neumann 11 Jan 2018, at 01:41 PM

Package Specification Summary for Package: boomerang

Summary: Boomerang is a JavaScript library to measure the performance of your website from your end user’s point of view. It has the ability to send performance data measured at the client back to the server via a beacon URL further analysis. The boomerang library implements Real User Measurement (RUM) to measure the performance experience of real users by collecting quality indicators from the clients. The boomerang library is released under the BSD license. Details: https://soasta.github.io/boomerang/doc/ This package integrates boomerang with OpenACS, in particular with OpenACS subsites.
Description:
Maturity: New Submission or Maturity Unknown
This package depends on: acs-templating acs-tcl
Packages that depend on boomerang: None
Package parameters:
Version
Version of the boomerang library (default 1.737.0, type string, scope instance)

Bug Tracker Summary for Package: boomerang

There is no package with the name "boomerang" known to bug-tracker.


Code Metrics Summary for Package: boomerang

# Tcl Procs 6
# Tcl Lines 642
# Tcl Blank Lines 76
# Tcl Comment Lines 172
# Automated Tests 0
# Stored Procedures PG: 0 ORA: 0
# SQL Lines PG: 0 (blank 1 comments 0) ORA: 0 (blank 1 comments 0)
# ADP pages 1
# ADP lines 41
# Include pages (boomerang/lib/) 0
# Documentation pages 0
# Documentation lines 0
Browse Source API-browser
Github Repository: https://github.com/openacs/boomerang/tree/oacs-5-10

Integration of the Boomerang library as an OpenACS Plugin

Boomerang is a JavaScript library to measure the performance of your website from your end user’s point of view. It has the ability to send performance data measured at the client back to the server via a beacon URL further analysis.  The boomerang library implements Real User Measurement (RUM) to measure the performance experience of real users by collecting quality indicators from the clients.

The boomerang library is released under the BSD license.

Details:
    https://soasta.github.io/boomerang/doc/

This package integrates boomerang with OpenACS, in particular with OpenACS subsites.


Features

  • Obtain client site timings to measures the performance of your  website from your end user's point of view.
  • Support sampling (e.g. just obtain metrics from every nth request)
  • Output performance data in a format suitable for feeding into  Elasticsearch/Logstash (see below for example config files)
  • Configure the appearance of the boomerang per subsite with  the following parameters:
     
    BoomerangEnabled 0|1
    BoomerangSample 1
    BoomerangBeaconUrl  /boomerang_handler
     
    The parameter BoomerangSample can be used for busy sites to sample not every request (when the value is 1), but e.g. every 5th request (setting BoomerangSample to 5).
  • Support for host-node-mapped subsites
  • Site-wide admin support for compressing .js file
  • Performance: include boomerang in the template costs about 0.3ms, processing of the beacon call takes about 1ms (filter times).


Installation

  1. Install this package via the OpenACS Package Manager
     
  2.  Add this package to the templating system
     
    • OpenACS 5.10.0d2 or newer:
      The boomerang plugin uses the "subsite::page_plugin" callback, so no changes on templates are necessary. Make sure to update as well the acs-bootstrap-installer to 5.10.0d2 or newer to obtain the updated blank-master.
       
    • OpenACS 5.9.1:
      Add to the top of your blank-master.tcl the following snippet:
            if {[info commands ::boomerang::initialize_widget] ne ""} {
                ::boomerang::initialize_widget
            }
  3.  Configure in the parameters of the subsite (e.g. the main subsite) the section "Boomerang Plugin"

 

Usage

For the explanation of the parameters, see:
     https://soasta.github.io/boomerang/doc/howtos/howto-0.html
     https://soasta.github.io/boomerang/doc/api/RT.html
     https://soasta.github.io/boomerang/doc/api/navtiming.html    
 

Prerequirements

The implementation uses nx from the next-scripting framework.

    https://next-scripting.org/xowiki/

which is automatically installed for XOTcl2 via naviserver-openacs. It works best with OpenACS 5.10.0d2 or newer, but works as well with 5.9.1 (see INSTALLATION section above) or earlier versions with little adaptions

 

OPTIONAL: Define a custom Boomerang Plugin

  1. Clone boomerang repository
  2. Install npm, grunt if necessary
  3. Follow step 2 in https://github.com/SOASTA/boomerang     which means
          ... configure plugins
          ... grunt clean build
  4. The result is in the build directory. The generated files have the a build-time stamp in seconds included. You might which to rename these with a custom name.
  5. Copy the the *.min.js and *.min.js.gz files to the boomerang/www/resouces directory, which might be
    cp  build/boomerang-1.0.*.min.js build/boomerang-1.0.*.min.js.gz ..
    and adapt the version number in the boomerang parameters (on /acs-subsite)
     

     

OPTIONAL: Feed Boomerang Data into an elasticsearch cluster

When boomerang is enabled, the results of the beacon are placed into
the OpenACS log directory with a name boomerang-*.log (containing the date).

Below are sample-snippets from OpenACS.org the log-files into elasticsearch,
such that it can be analyzed later with kibana or grafana.

Example filebeat entry for the data feed:

      paths:
        - /var/www/openacs.org/log/boomerang-*.log
      input_type: log
      fields:
          log_type: boomerang-log


Example logststash entry (input filter for transforming the data from filebeat and to feed it into easticsearch)

  if [fields][log_type] == "boomerang-log" {
    json {
       source => "message"
       remove_field => [ "restiming" ]
    }
    grok {
       match => [ "source", "/var/www/%{GREEDYDATA:server}/log/boomerang-" ]
    }    
    geoip { source => "clientip" }
  }

 

Example Analysis Screenshots from OpenACS

The following chart shows performance indicators of OpenACS.org over the last two days. The topmost chart is produced with grafana and shows elapsed time (left axis) and number of requests (right axis). "Average runtime" is the time measured on the server (how long does it take the server to fulfill the requests), whereas "Average t_done" is the time it took the browser to render the page (stating at the click). "t_done" is a default measurement provided by boomerang. Note, that the values from boomerang require that JavaScript is active at the client side (i.e. there are typically no spiders included in this value, as well only views).

OpenACS performance 2 days

We can see from these values that the average runtime is 36ms, while the full render time is on average 2.2s (about 60x larger). One reason is that static content is served quite fast.  The second chart is as well produced with grafana and analyses the phases of requests based on W3C Navigation Timing. The nt_response_time shows the client point of view how long it took the server to provide an response to the request.

OpenACS performance 2 days

We can see that nt_response_time is about 100ms (it takes longer to server the dynamic html files). Also from this point of view the response time of the server for the main request only contributed a fraction of the total time. The longest time is the processing time in the client, which depends on the content, CSS, JavaScript, etc. Note that these are overall values, averaging over all requests. One can certainly drill down on certain pages for more details.

Another interesting aspect is the geographic location: has the client a good internet connection in respect to the server? The first map was produced with kibana and shows from which geographic locations pages of OpenACS.org were requested over the last week. Locations with more requests are shown emphasized.

OpenACS requests 7 days

We see that the highest number of requests are coming from the US (Seattle and Washington areas), and in Europe is Austria (Vienna) and France (Paris) issued many requests. If we analyze for boomerang requests with high values of "t_done", we see that these requests are coming from regions far away from Vienna, where the server is located (e.g. from Asia, South America, Australia)

OpenACS requests 7 days slow requests

 

 

Next Page
previous April 2024
Sun Mon Tue Wed Thu Fri Sat
31 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 1 2 3 4

Popular tags

17 , 5.10 , 5.10.0 , 5.9.0 , 5.9.1 , ad_form , ADP , ajax , aolserver , asynchronous , bgdelivery , bootstrap , bugtracker , CentOS , COMET , compatibility , CSP , CSRF , cvs , debian , docker , docker-compose , emacs , engineering-standards , exec , fedora , FreeBSD , guidelines , host-node-map , hstore
No registered users in community xowiki
in last 30 minutes
Contributors

OpenACS.org