#### OVERVIEW

- Introduction to Panorama X Team Server -- using a server extends the reach of Panorama beyond a single computer to a network of connected computers, or even across the entire Internet. This topic introduces the concepts needed to understand the operation of the Panorama X Team Server system, including multi-user database sharing and database web publishing.

#### Server Setup and Database Administration

- Installing and Launching Panorama Server -- instructions for getting Panorama Server up and running, as well as best practices for configuring system settings on a server computer.

- Setting up a Computer as a Panorama X Client -- instructions for setting up a new client computer so that it can access a Panorama X server.

- Server Administration Wizard -- this wizard is used to monitor the operation of Panorama servers (both local and remote servers can be monitored), including monitoring server status, checking database status and downloading databases, and monitoring the status of user sessions.

- Using an External Web Server -- instructions for using Panorama Server in conjunction with an external web server (for example Apache, Nginx, etc.).

- Restricting Server Access -- limiting Panorama X Server access to authorized users.

- Advanced Server Settings -- Panorama X Server settings for advanced users.

- Logging Server Activity -- recording server activities for later analysis.

### MULTI-USER DATABASE SHARING

#### Shared Database Administration

- Creating a Shared Database -- convert a single user database into a shared database.
- Permanently Detaching a Shared Database from the Server -- unshare a shared database.
- Permanently Deleting a Database from the Server -- remove a database from the server.
- Changing the Design of a Shared Database -- modifying database fields, forms and/or procedures.
- Temporarily Disconnecting a Shared Database from the Server -- pause database sharing.
- Manually Uploading a Quick Patch to the Server -- uploading a procedure or form.
- Working with Sharing Disruptions -- dealing with network & power outages, disconnections, and other anomalies.

#### Shared Database Operation

- Record Locking and Editing Shared Data -- coordinating data entry across multiple simultaneous users.
- Sharing Icon & Context Menu -- operation of the sharing icon and pop-up menu (in the toolbar).
- Shared Database Synchronization -- data synchronization across multiple users.
- Working With Summary Records in a Shared Database -- summary records are not shared between users.
- Automatic Record Numbering in a Shared Database -- generating unique numbers across multiple users.

#### Shared Database Programming

- Record Locking in Procedure Code -- implicit and explicit management of record locking.
- Synchronizing in Procedure Code -- customizing the data synchronization process.
- Server Variables (Shared Variables) -- sharing variable values across multiple users.
- Bulk Data Transformations on Shared Databases -- using formulafill, propagate, etc. in a shared environment.
- Controlling and Monitoring the Server Connection -- overriding automatic server connection behavior.
- Looking up Data Directly from the Server -- local in-memory vs. server lookups.

### DATABASE WEB PUBLISHING

#### Web Coding

- URL Tool Menu (Web Debugging) -- tool with popup menu to assist with debugging web procedures.
- Manually Uploading a Quick Patch to the Server -- uploading a procedure or form.
- cgitest -- tests a CGI procedure.
- cgilink( -- creates a domain independent URL for another CGI action on the same server.
- cgilinknewwindow( -- creates a domain independent link for another CGI action on the same server that opens a new browser window.
- cginavlink( -- creates a domain-independent navigation link for the current record in this database.
- cginavlinknewwindow( -- creates a domain-independent navigation link (to a new browser window) for the current record in this database.
- Web Error Pages -- customizing the server response when an error occurs.
- webtext( -- converts a number or regular text into text encoded for display in a web browser.
- webtagortext( -- prepares text for display in a web page.
- webfontsubstitutes -- generates an array of standard font substitutions for web browsers.
- weburlselect -- selects one or more records based on keys in a URL.
- weburlfind -- finds a record based on keys in a URL.
- webformselection -- selects data based on input from a web form. The web form must have fields that match the database fields.
- webhomesubfolder( -- returns the folder ID of a subfolder of the web server's home folder.
- webserverinfo( -- retrieves additional information about the web server and the current browser request.

#### Web Tables

- htmldatatable -- generates an HTML table from selected data in the current database.
- htmlarraytable -- generates an HTML table from an arrray.
- HTML Export -- custom exports into an HTML file.
- renderwebtable( -- renders a web table using records selected with WebSelect in the current database.
- getwebtabletemplate( -- converts a web table template (created by the Text Export Wizard) into the format compatible with the HTMLDataTable statement.
- listwebtables( -- returns the list of web tables (generated by the Text Export wizard) in the specified database.

#### Web Form Display

- renderwebform -- renders a Panorama web form into HTML, merging data into the template as necessary.
- retrywebform -- retries a web form that has missing or invalid data.
- webformmerge -- fills in an HTML form with database values (fields and variables).
- webmerge -- merges an external HTML template file with fields and variables from the current record.
- htmldatamerge -- uses a template to generate HTML you want from a database.
- webdatabasetoform -- fills in an HTML form with database field values.
- webformlink( -- generates a link to a Panorama form on the current web site (the link will open in a new browser window).
- webformlinknewwindow( -- generates a link to a Panorama form on the current web site.
- webimagedisplay( -- used within an Image Display Object to specify both a web image (used when the form is displayed in a web browser from Panorama Server) and a local image file (used when the form is displayed within Panorama).
- webformrecordid -- adds a RECORD_ID hidden field to the HTML of a web form.
- webthisrecordkey -- makes a key for use with the WebURLSelect statement to specify the current record.
- getwebtemplate( -- retrieves the web template (a dictionary) associated with a form (if any).
- getwebtemplatetext( -- retrieves the text of the web template (a dictionary) associated with a form (if any).
- deletewebtemplate -- deletes the web template (a dictionary) associated with a form (if any).
- listwebtemplates( -- retrieves a list of web templates in the specified database, if any.
- makeformwebtemplate -- converts a Panorama form into the equivalent HTML/CSS.
- savewebtemplate -- saves a web template (a dictionary) associated with a form.
- sethiddenwebformitem -- adds a hidden field to a form on a web page.

#### Web Form Data Input

- webformitemnames( -- returns a list of POST parameters passed from a form to the web server as a carriage return separated list.
- webformitemvalue( -- gets the value of a POST web form item (used when processing a web query with Panorama Server).
- webformtodatabase -- updates the current database with information from the web form that was just submitted.
- webformallitems( -- returns a list of POST parameters passed from a form to the web server as a carriage return separated list.
- grabwebformitems -- grabs multiple web form items and stuffs the values into fields and/or variables.
- webformitemcheck -- uses a formula to check the validity of a web form item.
- webformerrors( -- returns a list of errors that have been collected with the WebFormItemCheck statement.
- webformvisibleitems( -- returns a list of the visible items in the web form submitted to this web procedure.
- webformhiddenitems( -- returns a list of the hidden items in the web form submitted to this web procedure.
- webformitembang -- sets the text generated by the webformitembang( function.

History

Version | Status | Notes
10.2 | New | New in this version.