OpenInsight 9.2.1 Features, Enhancements and Fixes (General)

9.2.1 Bug Fixes/Enhancements

 

Basic +

   Fixed Copy_Table to use From Location when To Location is null.

   Fixed issue where RTI_LOCK_OWNER program was missing.

   The maximum number of indexed fields that can be searched with the INDEXLOOKUP command was increased from 16 to 24

   The Copy-Row command has been modified to accept a seventh parameter, a Boolean indicating whether the source rows should be    deleted after the copy.

   RTI_DISTINCTLIST - Pass in a set of information, get back a distinct set.  Relies on RTI_SETS, which relies on the client install.

   Declare Function rti_distinctlist

   distinctlist = rti_distinctlist("A A A B B A B C D A B", " ")

   

  RTI_STRINGBUILDER - A wrapper for [] based string manipulation. Loosely mimics .Net stringbuilder

  sb = ;   rti_Stringbuilder(sb, 'New')   orig_mediaIDs =

  done = false$

  Select hMedia

  Loop

     Readnext id Else done = 1

  Until done

     rti_stringbuilder(sb, 'Append', id:@vm)

  Repeat

  rti_stringbuilder(sb, 'ToString', orig_mediaIDs, true$)

  rti_stringbuilder(sb, 'Destroy')

 

   

  RTI_HASHTABLE2 -  Rewritten in Jasvascript instead of .NEt hashtable.  Better implementation of Keys method.  In memory hashtable.  Useful full for caching information used by one engine

  RTI_MEMCACHED  New function.  A sandbox implementation of memcached hashtable service.  Useful for sharing information across OpenInsights without writing to disk.  See see http://code.google.com/p/memcached/wiki/MemcacheBinaryProtocol

  RTI_DIFF New function. A diff engine for comparing two strings.

  See http://snowtide.com/files/media/jsdifflib/difflib.js

 

 

   RTI_CRYPTO   New function. A wrapper for RTI_MD5, RTI_SHA1. It implements Cryptographic functions from http://pajhome.org.uk/crypt/md5/index.html

   Read that site to see the code and examples of usage.  The scripts are implemented verbatim OI without change and without need to access external webserver.

   Usage: RTI_CRYPTO - rti_crypto(method, param1,param2,param3)

   ans = RTI_CRYPTO( 'hex_md5', string )

   ans = RTI_CRYPTO( 'b64_md5', string )

   ans = RTI_CRYPTO( 'str_md5', string )

   ans = RTI_CRYPTO( 'hex_hmac_md5', key, data )

   ans = RTI_CRYPTO( 'b64_hmac_md5', key, data )

   ans = RTI_CRYPTO( 'str_hmac_md5', key, data )

   ans = RTI_CRYPTO( 'hex_sha1', string )

   ans = RTI_CRYPTO( 'b64_sha1', string )

   ans = RTI_CRYPTO( 'str_sha1', string )

   ans = RTI_CRYPTO( 'any_sha1', s, e )

   ans = RTI_CRYPTO( 'hex_hmac_sha1', key, data )

   ans = RTI_CRYPTO( 'b64_hmac_sha1', key, data )

   ans = RTI_CRYPTO( 'any_hmac_sha1', key, data, e)

   ans = RTI_CRYPTO( 'str_hmac_sha1', key, data )

 

   RTI_JSON - Improved functionality / stability.  Many thanks to Jensen Thomassen for his inputon this.

 

   RTI_CREATEGUID - added outFormat parameter - rtiCreateGuid("{") returns the guid in string format {C8383395-0000-B7BE-0000-45C7918EF371}

   RTI_SET_DEBUGGER - Can now toggle debugging on fly, so can debug a CTO session or Arev32 session using OI debugger. 

   call RTI_SETDEBUGGER(0, ) mode=0 to disable, call RTI_SETDEBUGGER(1, ) to break, call RTI_SETDEBUGGER(2, procedurename) to intercept using the specified procedure

   RTI_LOAD_DATABASE - Can Load a different DBT programatically. call  rti_load_database("MYDB") to load MYDB.DBT

 

   DSBFS_GET_IDENTITY - Can obtain the key created after an inserting a row into a table with an identity key

 

OIPI.net/OIPI

   Fixed issue with preview flashing when printing.

   Fixed issue when printing summary report in the test mode and system goes to the debugger.

   Fixed issue when printing single underlines for totals.

 

Form Designer

   The ability to load previous values into controls within a window has been introduced in OpenInsight 9.2.1.  This equates to the ARev functionality of :

   The "Ditto" prompt default.  See the Form Designer Property window for details.

   The "Alt-C" softkey that duplicates the most recently saved form data into the form's controls (All non-key controls are updated)

   The "Alt-O" softkey that duplicates the most recent saved form data into the form's controls (only a single control is updated)

   Fixed problem with datatbl.dll where after repeated use of datatable would causes crashing.

   Fixed problem with STYLE_BY_POS where setting first row would not work correctly.

 

General

   Added tab controls to valid control types to use a context menu on.

   Fixed bug with context menu where items with multiple periods or colons would cause an error message.

   Update context menu window to save environment settings on close as well as save.

   Fixed bug with edit tables where launching tables with pipes in column headers would cause crash.

   Fixed a bug in Btree.Extract where values were not returned if it did a lookup on a crossref index with multiple delimiters.

   Cleaned ADD_DND form, included ability to sort by control.

   Cleaned up RTI_COMMUTER and added to system editor menu.

   Removed WebOI from New IDE menu and quick help.

 

System Editor ++

   Created a New Open Stored Procedure dialog. Dialog is a hybrid of single and multiple selection.

   Improved speed. Multiple selection option, increased keyboard responsiveness

   New stored procedure dialog will remember multiple selection option.

   New stored procedure dialog will remember show inherited option.

   Created a new Open Insert dialog. Dialog is a hybrid of single and multiple selection.

   Improved speed. Multiple selection option, increased keyboard responsiveness

   New Open Insert dialog will remember multiple selection option.

   New Open Insert dialog will remember show inherited option.

   Updated Workspace Softkeys for Next / Previous and Next Bookmark / Next Error.

   Added new configuration record to the editor, thus removing the association with the INI file.

   Fixed bug where restoring a window would not restore to correct size.

   Fixed record locking issues when closing multiple child windows.

   Fixed locking issues when resaving a record as an OS File.

   Added multiple icons and rearranged menu items on IDE.

   Reworked the open window events dialog.

   Open window events dialog will remember  only show controls with events  option.

   Fixed issue in where suspect unassigned variables were erroneously reported.

   Added new right-click custom context menu to the tabs.

   Added  Undo Last Close  to the context menu.

   Added  Close all but this  option to context menu.

   Open record dialog will search in a case insensitive fashion.

   Open record dialog now has options for showing index files and dictionary files.

   Add context sensitive context menu to the tabs.

   Update menu and updated accelerator keys.

   RBASIC keywords now support conversions with spaces in them.

   Added New Insert and New Record button to the IDE.

   Added Close All feature.

   Added Undo Last Close Feature.

   The new configuration record will be in the SYSENV file.

   Added dropdown on IDE to find list of inserts. Selecting an item from the dropdown will go to the specified insert.

   Added menu item to Jump to Insert.

   Added new status section at bottom with 5 tabs to supplement the existing status section.

   Added record information tab which will give you pertinent information on the record based on cursor position.

   Added Commuter Module Generator To Editor Menu

   Record information with convert internal values as needed.

   Added new find tab that will replace the existing find dialog with improved features. It can be accessed by the menu or Ctrl+F. The tab will auto select upon activation.

   New find tab will have a drop down that will remember the users last 50 searches.

   New find features including a character sensitive find. Words will be found and highlighted as they are typed.

   New find features include a colorized status section to inform the user of the number of matches or lack thereof.

   New replace tab will replace the replace dialog and replace bar. It can be accessed by the menu of Ctrl+H. The tab will auto select upon activation.

   New replace tab features include character sensitive find. Words will be found and highlighted as they are typed.

   New replace tab features a colorized status section to inform the user of matches of lack or matches.

   New replace tab will have two drop downs that will remember the users last 50 finds and replaces

   New favorites tab has been added that allows the user to save certain commonly accessed entities. They can be added, deleted, and launched from this tab.

   Fix double click issue where a goto or gosub was being treated as a separate function. Changed order of lookup.

   Open Event dialog will now remember option to  only show controls with events. 

   Fixed issue where users could only compile an insert once. Users would have to close and reopen to compile again.

   Removed the maximize workspace menu option. The IDE will automatically remember whether it was maximized on close.

   Fixed multiple issues with toggling toolbars, tabs, status section.

   Updated global replace screen to widen the combobox as well as add a vertical scrollbar.

   Global replace dialog will now save the case sensitive, whole word option.

   Global replace dialog will now save the search inherited, recompile option.

   Global replace dialog will now center correctly to parent.

   Added option to OS File dialog to default to a certain file type.

   Added option to OS File dialog to default to a certain directory.

   Added option to save tabs on close

   Reopening editor will launch saved tabs.

   Added option to use tabs or spaces when indenting.

   Added option to toggle keyword case conversion.

   Added option to toggle using call tips.

   Added option to toggle double click opens entities.

   Added option to configure selection color.

   Return to jump will no longer prompt for jump.

   Fixed issue with the define structure window where it was causing issues with other open children when they are not maximized.

   Added color configuration options to toggle between colorizing keywords, numbers, operators, identifiers, preprocessors, comments, quotes, labels

   Updated program size information to show size in red when above a certain byte amount.

   Improved font size handling.

   Fixed issues with locked entities. You can now view certain locked entities in view only mode.

    !  exclamation points now comment out code.

   Keyword case will not convert inside   // ,  *  and  ! 

   Fixed locking issues with opening, closing, reopening events.

 

Source Code Management (SCM)

   Source Code management (SCM) is invoked by checking the SCM Checkbox in the Database Manager, Environment Settings

   SCM Saves a unique version of every program compiled as it is compiled.

   Versions of saved source code can be versioned.

   Source code can be grouped in Modules

   The different version of the source code can be compared to show differences.

   All SCM functionality is available in the System Editor++, within the SCM menu

 

TCL

   Fixed issue where tablename was not found with LISTDICT when using a lowercase tablename.

   Greatly increased speed of the grid reporting option.

 

AREV32

   Fixed issue when doing a listmedia to the printer.

   Fixed OCONV issue with Masked Decimal output to check whether value is a number or not.

 

CTO

   Fixed issue CTO_CHILD_FORM and OIPI print preview window.

   Better support for  Q  pointers.

 

UI Workspace

   Fixed issue in popup designer with R and F Type popups.

 

O4W              

   Overall

   Fixed DatePicker, TimePicker, ColorPicker so that their functionality would remain on new rows added via table insert or add buttons

   Changed how themes are selected (including attempt to automatically download required files for local jQuery themes);

   more javascript changes for better performance

   Changed to apply selected theme to overall form;

   Fixed bug in color-picker plugin (now allows deletion of value in textbox to mean "no color selected");

   Fixed bug in validation plugin (now allows for international phone numbers if prefixed with +<countrycode>);

   Added "About" menu item to standard menu

   Changed which plugin is used for "rounded corners" effect;

   Some misc cleanup in the use of the tabs;

   Some misc cleanup in the O4W_LOGIN and O4WI_PARSER routines to make sure extra parameters aren't passed into, or out of, the login form  

   javascript routines and communication with AJAX changed to better allow for dynamic addition of inline styles, stylesheets, and images;

   possible performance improvements in javascript handling (including "preloading" of images)

   Added "history" functionality, allowing for browser 'back' and 'forward' buttons to navigate through tabs, "breadcrumb" sections, and at user-defined points;

   Added ability for some functions (that used to accept plain-text only) to accept more complicated HTML (for example, to allow images in tabs, and images and links in checkbox and radio button sets);

   Added new combobox control;

   Fixed generation of styles for "links" (now will work when generated as a named style, and/or when generated in O4WResponse() processing);

   Generated new O4WCodes records for each plugin, and changed all stored procedures using hard-coded plugin paths to use new O4WCODES records (field 1 of the new PLUGIN_xxx records contains any .css files to load (@VM delimited); field 2 contains any .js files to load (@VM delimited);

   field 3 contains any explicit javascript to run (@VM delimited));

   "User conversion" URL_FORMAT enhanced to allow for specification of "STRICT" and "COMPONENT" branches (if "strict" is specified, then the javascript encodeURI/decodeURI functions are used instead of the OI logic; if "component" is specified, then the javascript

   encodeURIComponent/decodeURIComponent functions are used.  For example, RSLT = ICONV("MY STRING TO ENCODE", "[URL_FORMAT,STRICT]"))

   Many functions changed to use O4WEscape (to appropriately encode values for HTML)

   Version number in cfg_o4w record changed to 1.1;

   new jQuery (1.4.2 javascript with 1.8.2 UI) deployed as default;

   Online connection (using Google Content Delivery Network (CDN)) updated with proper URL;

   AJAX communications improved (can now dynamically load css and external js files in O4W's "response" mode);

   Changed internal procedures to use new (either provided, or user-defined) "lock" procedure wherever practical;

   Improved O4W ability to define "unique" sessions - relies on form-based variable instead of session "cookie"

                   

   Report Definition ("Report Wizard")

   Enhanced to use new themed iconButtons           

   Added option to select paginator/sorting routine to use

   added ability to choose existing OI report as source for O4W report;

   changed some of the bigger tables so they'd scroll;

   added option to allow for multiple select and additional details for search criteria in case they're indexed and a listbox is desired;

   added button to delete selection criteria;

   added button to delete display criteria;

   added grand-total background color;

   added button to rebuild/refresh the statement that we're building (that's displayed on each page as you walk through the wizard)

   added option to suppress wrapping/splitting a display column

                   

   Report Runner

   Enhanced to recognize links of type "linkedIn"

   Enhanced to use new themed iconButtons

 

   Report Running

   Enhanced options for heading and footing (support %D%, %DT%, %L%, and F options)

   Completely rewrote internal processing to accomodate new pagination routines;

   Added ability to download xml/csv/pdf of "drilled-down" values only (if desired)

 

   New User-overrideable routines

   O4WI_TABLEPAGERPLUGIN;

   O4WI_TABLEPAGERLOCAL

                      

   Connector

   New OECGI3P.PHP available for initial testing

                   

   Static menus

   Added Logout choice

   Added new static menu for PHP connector (startp.htm)

                   

   Templates

   All templates cleaned up to better comply with "strict" HTML standards

 

   Configuration Maintenance Screen

   Separate listings of local vs. online themes

   Changed default for jQuery to be Google-delivered 1.4.2/1.8.2 jQuery

   Changed how user specifies which version of jQuery to use (MIKE - this effects you);

   Updated CFG_O4W_BACKUP and created CFG_O4W_BACKUP_ONLINE records

   Added tab to allow for browser warning configuration;

   Added ability to specify a 'lock' procedure rather than use the built-in "optimistic locking" algorithm;

   additional options on which version of "core scripts" to use;

   allow for specification of template to use as the default for 'mobile' requests;

   ask whether to allow "dynamic" reports and forms to be generated (that is, when O4W_RUN_FORM and O4W_RUN_REPORT are called, they can be passed in the name of an existing OI form and report and can dynamically convert them to O4W);

   ask what templates should be used for the dynamic forms

   Completed option to define table paginator/sorting routine

                   

   Form Runner

   Enhanced to recognize links of type "linkedIn"

   Enhanced to use new themed iconButtons

   Now supports "OI Form Mode" - instead of 2 or 3 screens (a collector window, an optional selection window, and an entry/display window) as the current O4W Form does, the OI Form Mode uses a single screen (with only an entry/display window).  Read events are triggered when the key field, or

   last part of the key field, is changed, or when a record is selected by the QBF functionality

                      

   Form Definition ("Form Wizard")

   Enhanced to use new themed iconButtons

   Allow for specification of "OI Form Mode";

   Allow for specification of default width and height for any automatically generated "groups" on the form

   Added choice of combobox to control types;

   Fixed bug that marked all fields as read-only

   Added ability to specify changed, lostfocus (post-field) and gotfocus (pre-field) events on listboxes, checkboxes, and radio buttons;

   Fixed handling of changed, lostfocus ("post-field"), and gotfocus ("pre-field") events so they would work properly in dynamic tables with radio buttons/checkboxes/listboxes;

   Enhanced "changed" event in commuter module to document ability to change "link text" through change to common variable if field is defined as having a "link";

   Enhanced commuter module to look for "CHANGE" as well as "CHANGED" event

   Added ability to choose existing OI form as source for O4W form;

   added 'popup', 'changed value' and 'post-draw' events for commuter module capture;

   changed some of the bigger tables so they'd scroll;

   changed how you define the buttons on a "group";

   allowed for separately specifying alignment on label versus text within control;

   allowed for specifying additional details for search criteria in case they're indexed and a listbox is desired;

   allowed for specifying column width on each form prompt;

   added ability to use form as "feeder" into another form or report if no fields are specified;

   added ability to choose any type of input control and then mark it as "read only" (so you're not restricted to just "plain text" for read-only fields);

   Added option of "hidden textbox" as one of the input control types;

   Added option to allow for conversion (to upper or lower case) on entered data into input control;

   more appropriately show/hide additional details on dialog box that controls the input/display field properties;

   added option to allow for the return of multiple values from a popup;

   added confirmation dialog on the "change all" choice for the dialog box that controls input/display field properties

 

   Configuration Wizard

   Added new type of script configuration (using local files, without an internet connection) - this new script configuration uses the older theme selection;

 

   Changed APIs

   O4WLink now supports link type of "O4W_LINKTYPE_GRAPH$" (for O4W Dashboards);

   O4WSizeStyle now automatically appends "px" to values that are entered as numeric only

   O4WListboxStyle - new 6th parameter - "listbox ID" - allows for explicit setting of listbox ID;

   O4WMarkedStyle - new 3rd parameter - list (@FM, @VM, or @SVM delimited) of values that should be marked as selected to the listbox, checkbox, or radio button set;

   O4WForm - behavior change - generates and saves "O4WUniqueID" value on form, which is then available on subsequent requests to uniquely identify the current form;

   O4WListbox - behavior changes - 1. if ListboxStyle passed in with listbox ID, then this will be used as the listbox ID, otherwise it will use the default behavior of using the 'name' of the listbox as the id; 2. If MarkedStyle passed in with list of selected values, then those values will be shown as

   selected;

   O4WQualifyEvent - behavior change - now can be called as a function, and returns "1" if the event/id/etc. has been specified correctly, or a "0" if O4WQualifyEvent wasn't able to process your request;

   O4WCheckbox - behavior change - If MarkedStyle passed in with list of selected values, then those values will be shown as selected;

   O4WRadioButton - behavior change - If MarkedStyle passed in with list of selected values, then those values will be shown as selected

   O4WListboxOptions now has an additional parameter (bIsCombo): if set to "1" or "-1", turns the listbox into a combobox ("1" is a case-sensitive combo, and "-1" is a case-insensitive combo);

   O4WLink and O4WImage now support additional link types:

   O4W_LINKTYPE_LINKEDIN_PROFILE$: generates an "in" icon and a popup when clicked. Parameter "url" must be the linkedIn username to show.

   O4W_LINKTYPE_LINKEDIN_PROFILE_INLINE$: generates an in-line (always-displayed) linkedIn profile.  Paramter "url" must be the linkedIn username to show.

   O4W_LINKTYPE_LINKEDIN_SHARE$: generates a "share" icon for linkedIn.  Parameter "url" contains an optionally-@fm delimited string; field 1 is the URL to share, field 2 is (optional) title, field 3 is the (optional) linkedIn name of the person who is sharing the reference, and field 4 is the

   (optional) summary.

   Note that users of the LinkedIn link types must also call the new O4WLinkedIn() api in the create event if they are going to use the linkedIn links during any O4WResponse() processing.

   O4WText has been enhanced so that it, too, supports the O4WHTMLOption for "return html";

   O4WTimer now has a new parameter (bIsUpdate) which tells O4W that this is a change to an existing timer, and _not_ the creation of a new timer;

   O4WTabs - the last parameter (the styles) was an @VM delimited list of styles, 1 for each tab.  But sometimes you needed to specify some style information for the "overall" tabset; I used to do that by just taking the first style and using that as meaning _both_ "this is for the first tab" _and_ "this

   is for the overall tabset".  Blech.  So now, the styles can contain 2 @FM-delimited pieces; the 1st one is the @VM delimited list of styles (1/tab), and the 2nd field is the styles specifically for the 'overall' tabset;

   O4WSizeStyle - has 4 new additional parameters - minWidth, minHeight, maxWidth, maxHeight.  On browsers that support these properties, they let you set the minimum and maximum widths and heights of objects;

   O4WLink - supports new additional type of link - O4W_LINKTYPE_CLICK$.  When specified, clicking on the link will send a CLICK event to the O4W host routines.  The "URL" of the link is the name of the control (ctlentid) that is passed into the host routine;

   O4WMenu - has 3 new parameters - replaceName, overrideType, and styleInfo.  "replaceName" is the name of the tag to look for in the template (defaults to MENU).  "overrideType" is the type of menu to draw, ignoring/overriding what is found in the template (current values are "0" for the

   iPod-like vertical menu, "1" for a horizontal menu, and "2" for a tree menu).  "styleInfo" contains any style values that might be applied to the menu, including support for the O4WHTMLOptions for "return html"          

 

   Deprecated APIs

   O4WMarkedStyle, O4WResponseStyle, O4WValidateStyle, O4WColors (may not have been documented before), O4WCellStyle, O4WInputStyle,O4WListboxStyle

                   

   Menu Definition Screen ("Menu Wizard")

   New choice for link - "O4W Dashboard"

   Completely redesigned UI

   Added ability to set permissions on individual elements of the menu (instead of just on the entire menu)

   Now supports "click" type of link, to generate message to host routine when selected

                   

   New APIs

   O4WIconButton

   O4WLinkedIn(action, param1, param2, param3, param4, styleInfo): provides various linkedIn functionality, including alternative access to the new linkedIn link types.

   O4WFacebook(action, param1, param2, param3, param4, styleInfo): provides various Facebook functionality.

   O4WDatePicker

   O4WTimePicker

   O4WColorPicker

   O4WTableAdvancedStyle

   O4WHTMLOptions

   O4WSetHistory

   O4WEscape

   O4WI_LoadPluginData

   O4WTablePagerStyle      

   O4WMarkedOptions(bChecked, currValues);

   O4WResponseOptions(bTextOnly, bStyleOnly, bTriggerUpdate);

   O4WValidateOptions(validateType, bRequired, errMsg, optParam1, optParam2, bServerOnly);

   O4WTableAdvancedOptions(allowDND, roundedCorners, zebraStripe);

   O4WTablePagerOptions(pagerLocn, rowsperpage, sortablecols, maxrows, currPage, Options, whichPager);

   O4WTableCellOptions(colspan, rowspan, bAsHeader);

   O4WInputOptions(bEnabled, bReadOnly, bAutocomplete);

   O4WListboxOptions(bMultiple, Size, width, bSelectAll, listID);

   O4WAlignStyle(ID, hAlign, vAlign)

   O4WInputOptions contains a new flag - "bAutoComplete".  If set to "0", this tells the browser to _not_ try and "fill in" the field's value from the browser's memory.  This is useful for any "secure" site.  Note that this is not a standard HTML attribute, though, and - while supported by

   IE and Firefox - may not work on all browsers. 

 

   Form Running

   Changed to use new O4WDatepicker, O4WTimePicker, O4WColorPicker

                   

   Logout process

   Added to "master" menu

   O4W_LOGOUT routine defined to allow users to log out of O4W

                   

   New User-Overrideable Routines

   O4WI_LOCKHANDLER

                   

   Already-deployed 1.1 changes

   (These are already present in the OI 9.2 release; users in the field can change the version number (field 1) of the CFG_O4W record in O4WCONFIG table to be "1.1" instead of "1", save the change, and stop/restart theEngineService, to see these changes)

                                                                                 

   "Publish" stored procedure screen

   added support for preformatted text when 'wrapping' non-O4W procedures

   added Prompt Type and Prompt Data Routine fields for specifying prompts when feeding non-O4W procedures

 

SQL Connector

   Many bug fixes / additions.  Testing and fixes have focused on SqlServer.  Interactions with other databases such as Oracle, MySQL and Postgres are not as mature.

   You MUST re-generate existing dictionaries.  Either delete the shadow dictionary location, or for each table you have attached,  delete_row 'DICT.MYTABLE', '%FIELDS%' .

   Inserting into identity type columns is now supported

   Updating UniqueIdentifier (GUID) columns is now supported

   Mapping of data types is more accurate.

 

U2 DotNet based Connector

   Created U2UBFS, a U2 connector based on the Uniobjects .Net library ( UONET.dll ) instead of Intercall libraries.  The primary objective is to implement connection pooling, a feature that is only supported by the .NEt library.  The U2UBFS is a re-write of the connector, based on the D3//SQL bfs

   code base.

  • kb/kb_articles/kb0277.txt
  • Last modified: 2024/01/30 13:36
  • by 127.0.0.1