Web Development |
Application screens are stored in Panther's binary format. When an HTTP server requests a screen, Panther opens that screen, performs the processing specified for it, generates HTML or downloads Java for the screen, and returns the data to the HTTP server. This chapter describes how the HTML for the screen can be customized for your application.
A standard HTML document is composed of two main sections:
HEAD
element containing information about the document itself.
Each of these main elements can be composed of elements, each with its own use and format. All elements are identified by a tag or pair of tags. Each tag is enclosed by angle brackets–for example, When Panther generates HTML for a screen, it creates an HTML Within the Although Panther automatically translates each object in a Panther screen into its appropriate HTML element, you can customize the HTML generation. This chapter describes how to perform these tasks:
<HR>
. All elements begin with a start tag; and most elements also have an end tag, which appears at the element's end. To differentiate the two tags, the end tag is prepended with a slash–for example, </BODY>
.
FORM
element to contain the screen's content. FORM
elements, according to HTML standards, are located within a BODY
element.
FORM
element, Panther creates a series of tables containing INPUT
elements corresponding to the widgets. The tables maintain widget positions in the HTML document. Otherwise, the structure of the screen is lost because HTML has no other method to define positioning information.
Setting Custom HTML Properties |
The properties under Custom HTML category let you add elements or attributes to the HTML that Panther generates for your screen. Each of these properties allows free-form text entry; their contents are not validated by Panther.
A Panther screen has the following Custom HTML properties:
<HEAD>
section of the HTML document. Generally, this section includes information about the document itself, and except for the document title, this information is not displayed in the Web browser.
BODY
element that Panther generates for a screen. Within the BODY
element are the elements and tags containing the content of the HTML document. You can specify either standalone attributes or name=value
pairs.
There are attributes of the BODY
element which allow you to specify the background color for the display window (BGCOLOR
), the color for text in the document (TEXT
), the color for unvisited hyperlinks (LINK
), and the color for visited hyperlinks (VLINK
). To specify one of these attributes, include the attribute name and its value. For example, the following entry displays blue text:
TEXT=#00ff00
For reports, this property defines a background. The following entry uses the image plaster.gif
as a background:
BACKGROUND=plaster.gif
For screens, Panther automatically generates the BACKGROUND
attribute using the entry in the Wallpaper Pixmap property.
FORM
element that Panther generates for a screen. The FORM
element contains the content of your Panther screen. You can specify either standalone attributes or name=value
pairs.
Panther automatically generates the METHOD
and ACTION
attributes for this element. The METHOD
attribute specifies which CGI method, GET
or POST
, is used to send information to the server. The ACTION
attribute specifies the URL to receive the form content.
A Panther widget can have the following Custom HTML properties:
name
=
value
pairs. For example, the following entry for a dynamic label which displays an image specifies the thickness of the border in pixels:
BORDER=2
name
=
value
pairs. This property is only displayed when there is a value in the Default Link property.
<H2>
and its Suffix Markup property to the end tag </H2>
.
Using HTML Templates |
HTML templates behave as Panther screens, allowing you to have the flexibility of how the HTML is created tied in with the power of the Panther backend. In the HTML Template property, you specify the name of the HTML document to use in conjunction with the Panther screen. The document provides the basic HTML structure instead of using Panther to generate that structure.
In order to use an HTML template:
You can use HTML templates to perform these tasks:
GET
method to a CGI program other than Panther.
HTML template tags are specified by enclosing the tag in a set of double curly braces. For example, the following tag places the value from the The following tags are available for use in a Web application:
HTML Template Tags
title_id
widget in the HTML element id:
<INPUT TYPE=text NAME=id VALUE="{{title_id}}" SIZE=10>
{{emit:
object
}}
object
is a box or grid, all of its contents are generated. If object
is a field, only its first element is generated. To generate particular elements, use {{emit:
object
[[
n
]]}}
.
{{eval:
statement
}}
statement
in this context can contain assignments.
{{form:info}}
<FORM>
tag (or {{form:tag}}
). In order to cache the application data, this tag must be used in the HTML template.
{{form:messages}}
<div class="sm_message_text">
..</div>
tags. New in Panther 5.40.
{{form:output}}
<TABLE>
...</TABLE>
tags.
{{form:script}}
</FORM>
, following any widgets using the JavaScript validation functions–such as the functions for the Yes/No or Digits Only properties.
Note:
The values for the onLoad and onUnload screen events, which must be part of the <BODY>
tag, must be specified in the HTML template. These JavaScript event specifications are not generated with this tag.
{{form:tag}}
<FORM>
tag with ACTION
and JavaScript attributes. You must specify the corresponding end </FORM>
tag in the HTML template.
{{if:
condition
}}
{{else:}}
{{elseif:
condition
}}
{{while:
condition
}}
{{break:}}
{{continue:}}
{{next:}}
{{end:}}
i < 7
and i != 0
.
{{break:}}
exits a while block.
{{continue:}}
and {{next:}}
go to the next iteration of a while block.
{{end:}}
terminates an if or a while block.
{{include:
filename
}}
{{include:value:
expression
}}
expression
and use the value as the name of the file to include. This would be used, for example, if a widget contains the name of the file. The file search path is the same as for the HTML template itself.Here, value
is a keyword.
{{include:value:@screen("@current")->memo4}} {{eval:@screen("@current")->memo4="test.htm"}}
{{raw:
variable
}}
{{value:
variable
}}
except that characters like less than (<
) that are part of HTML syntax are not converted to escape sequences. New in Panther 4.29.
{{value:
variable
}}
{{
variable
}}
. If variable
has multiple occurrences, only the current occurrence is output unless the occurrence is specified. The current occurrence is the first one except for scrolling fields that have been scrolled.
{{ws:off}}
{{ws:on}}
{{ws:on}}
is the default.
The HTML template must contain a set of HTML tags, a set of BODY
tags, and a set of FORM
tags. The start FORM
tag can be specified using {{form:tag
}} or <FORM>
; the end tag must be specified as </FORM>
.
The following HTML template, which illustrates the order of the tags, outputs the entire Panther screen in the generated HTML:
<HTML>
<BODY>
<H2>Film Titles</H2>
<HR>
{{form:tag}}
{{form:info}}
{{form:output}}
{{form:script}}
</FORM>
</BODY>
</HTML>
Conditional processing can be specified using the following tags:
{{while:condition}}
{{if:condition}}
{{else:}}
{{elseif:condition}}
{{end:}}
{{eval:statement}}
Each block of processing must begin and end in the same file.
In order to prevent infinite loops on the jserver, two application properties are provided, html_max_loop
and html_max_nest
:
html_max_loop
is a limit on the number of while
loop iterations that will be permitted before the template processor aborts; the default setting is 1000
.
Setting As an example, if field To illustrate passing database values using an HTML template, Figure 8-1 shows a Panther screen as it appears in the editor:
This screen's HTML Template property is set to For each of the elements inside a double set of curly braces, the value is inserted at runtime. Consequently, the browser displays the HTML document as follows:
The form can be submitted back to your Panther Web application or, if another To submit the form back to the Panther Web application, the HTML template must contain the To submit the form to a non-Panther Web application, you must specify the The HTML document receives two values from the Panther application:
html_max_loop
or html_max_nest
. to zero removes the limit.
myhtml
contains HTML you want to put in the generated HTML, you might include the following in your template file:
{{eval:@app()->html_max_loop = myhtml->num_occurrences}}
{{eval:vars i = 1}}
{{while:i <= myhtml->num_occurrences}}
{{raw:myhtml[i]}}
{{eval:i = i + 1}}
{{end:}} Passing Database Values
Figure 8-1 The widgets contain values fetched from the database.
vidname.htm
. This HTML document contains the following tags:
<HTML>
<HEAD>
</HEAD>
<BODY onLoad="window.status =
('Displays film title information')">
{{form:tag}}
{{form:info}}
<HR>
<H2>Film Titles for {{value:username}}</H2>
{{emit:title_id[[1]]}}
{{emit:name[[1]]}}
<BR>
{{emit:title_id[[2]]}}
{{emit:name[[2]]}}
<BR>
{{emit:title_id[[3]]}}
{{emit:name[[3]]}}
{{form:script}}
</FORM>
<A HREF="http://myserver/cgi-bin/proweb/vidlist.scr"
Start a New Search</A>
</BODY>
</HTML>Figure 8-2 The HTML document in the Web browser contains the database values.
Submitting a Form
GET
method is specified in the HTML template, to a non-Panther Web application.
{{form:info}}
tag. This maintains the cache data for a Panther screen utilizing an HTML template and updates the template dynamically to associate the cache file with it.
<FORM>
tag with the appropriate GET
method.
search_str
, used to initialize the HTML document's search field:
<INPUT NAME=q SIZE=55 MAXLENGTH=200
VALUE="{{search_str}}">HREF
destination in an anchor on the HTML document; it lets the user return to the Panther Web application. Of course, this can be replaced with a hard-coded URL:
Using Hyperlinks |
Hypertext links enable users to move from one HTML document to another. You can set hyperlinks in a Panther Web application in several ways, as shown in following sections.
To view different types of hyperlinks in Panther, refer to Hyperlinks in the Panther Gallery accessible from the Web application server.
Designate a dynamic label or graph widget to act as a hyperlink by setting its Default Link property to the desired URL, either in the editor or at runtime:
http://prolifics.com
default_link
property at runtime. For example:
Note:
To avoid JPL colon expansion, prefix any colon in the URL string with a backslash.
home_lnk->link="http\://prolifics.com"
To specify attributes for the hyperlink, use the Link Attributes property.
For arrays, you can specify a different URL location for each occurrence of the array using the Item Link property.
The following JPL procedure specifies the Item Link property for each occurrence in an array by building on the value in the Default Link property and using the occurrence number to make each value unique:
Call sm_web_invoke_url to invoke a hyperlink without awaiting user action:
sm_web_invoke_url immediately stops Panther processing and generates no HTML for the screen. Instead, a request is sent to the browser to go to the specified URL.
If a list box is in a grid widget and its Listbox Type property is set to Action, the values appear as hyperlinks. The screen is submitted back to the server when the user selects one of these hyperlinks.
If Listbox Type is set to Select Any, the values are converted to columns of radio buttons or check boxes:
Setting the Item Link Property
proc makelink()
{
vars i
for i = 1 while i <= arraydoc->max_occurrences
{
arraydoc[i]->item_link = \
arraydoc->default_link ## doc[i] ##".html"
}
} Calling sm_web_invoke_url
call sm_web_invoke_url("http\://prolifics.com")
Placing an Action List Box Inside a Grid
Since widgets in reports can have link and image properties, you can make the web-deployed report interactive by using links to:
Using Hyperlinks in Reports
By invoking another report, you can obtain a "drill down" effect, generating a detail report for any item in the original report. For example, if a main report generates a list of customers, each customer's last name can be a link to a detail report. This "drill down" speeds access to report data by displaying only the detail data that the user wishes to see.
To provide this functionality, a widget in the main report (in this example, For more information on invoking reports using a URL, refer to "How to Invoke a Report From a URL" in Reports.
last_name
) has its Link property set to the URL that invokes the detail report. By setting this property at runtime through a JPL procedure called from the main report's Detail node, the appropriate customer ID can be inserted for the detail report's invocation.
Setting Target Windows |
When you invoke a document from a hyperlink, it typically appears in the same browser window as the previous document. Several screen and widget properties are available that let you assign names to browser windows—or targets—and specify which one displays a document. If the window does not exist, the browser creates it and loads the document in it.
Targets can also be used with framesets that let the user view multiple documents in the same browser window. The frameset definition specifies the number of frames inside a browser window and the target name for each frame.
You can specify target windows for individual hyperlinks, all hyperlinks on a screen, or for a specific screen:
Select the dynamic label that acts as a hyperlink and set its Target property to the name of the browser window. For example, if the Target property is set to window2, the hyperlink is displayed in the browser window window2. If this window does not exist, the browser program creates it.
Note: The Target property is accessible only if the Default Link property is filled.
Set the screen's Target Default property to a browser window name. This inserts the <BASE TARGET>
tag in the HEAD
section of the generated HTML. All hyperlinks on the screen whose Target property is empty use this window.
For example, if the screen test.scr
has Target Default set to window2
, then each of the hyperlinks on that screen whose Target property is empty display in the same browser window window2
.
The screen's Display Window property determines which window displays this screen, no matter where it is invoked. For example, if the screen test.scr
has Display Window set to content
, the screen is always displayed in the browser window content
.
Note: If the screen is invoked by a hyperlink that has its target window set, either through the Target Default or Target property, the hyperlink specification overrules the screen's own Display Window property.
Specifying the Browser's Title Bar |
Using a descriptive name in the browser's title bar provides users with an easy reference for the current document:
Using Graphics |
Most Web browsers can display graphics files that are in GIF or JPEG formats. Panther supports both formats in a number of widget types. Graphics can be included for illustrative purposes only; or they can be used as image maps that enable navigation to other Web resources.
Web browsers vary in their support for graphic formats. You can test whether a specific format is available with the CGI variable @cgi_http_accept.
The graphics files can be located in relation to the application directory or in the directory named in the ImageDir setting in the application's initialization file.
The default border setting for the graphic is BORDER=0
so that a border is not displayed. To give a graphic a border, enter the border's pixel size in the Attributes property. In this example, the Attributes property sets a border to 2 pixels:
BORDER=2
If Keep Image Size is set to Yes (the default), Panther uses the GUI height and width of the graphic when it positions widgets in the generated HTML. If set to No, it positions the graphic on a single line in the HTML. You can usually leave this property set to Yes.
If Panther cannot determine the graphic's size at runtime, it supplies a default size of 32 x 32 pixels to the browser. The size of the graphic can also be set in the Attributes property.
Graphs and charts created with the graph widget are available in Web applications. The graph can also be a hyperlink so the Link and Link Attribute properties are available for this widget type.
An image map is a navigational tool that can take users from one location on the Web to another, or to another location within the same site. The coordinates of a graphic are used to divide the graphic into separate sections. Each section is assigned a hyperlink; users can click on it in order to go to a Web resource.
A Web application can include server-side image map files. An image map file contains the coordinates for each section and its hyperlink. Image map file formats vary according to the program that is used to process the image map. The HTTP server decides which program processes the image map and where the image map file must be located.
In the Panther Gallery, Graphics illustrates different types of graphic formats and an image map. The Panther Gallery is accessible from the Web application server:
http://server-name/cgi-bin/jwsamp/main
You can create a client-side image map in JPL using the sm_web_invoke_url function. Two JPL globals, @web_image_click_x
and @web_image_click_y
, contain the X and Y coordinates of the user's mouse click.
goto_dept
.proc goto_dept
if (@web_image_click_x > 1 && < 125) && \
(@web_image_click_y > 1 && < 110)
call sm_web_invoke_url("http://myhost/top.html")
.
.
.
return
Graphics can be fetched using the HTTP protocol, rather than the Panther Web application server. In the Web application's initialization file, specify a sub-directory of the HTTP server's document root directory in the ImageDir variable. When development of the application is complete, copy the graphics to this sub-directory.
For local intranets, only specify the sub-directory name; for the Internet, specify the HTTP protocol, followed by the domain and the sub-directory name. For example, to retrieve the graphic my_logo.gif
, the following setting for a local intranet:
ImageDir=my_app
results in the following HTML, prepending the name of the current machine:
<IMG SRC="http://currentMachine/my_app/my_logo.gif">
However, if the HTTP protocol is specified:
ImageDir=http://prolifics.com/my_app
results in the following HTML:
<IMG SRC="http://prolifics.com/my_app/my_logo.gif">
Using the FRAME Extension |
Frames allow a browser window to be divided up into several independent subwindows. Each subwindow can display a different Web resource. Each region, or frame, has several features:
Frames are generated with extensions You can include frames in your Panther application by specifying the HTML document or the HTML template that contains the The Panther Gallery illustrates this in a sample screen entitled Frames which is accessible from the Web application server:
FRAMESET
and FRAME
. In the HTML document, FRAMESET
replaces the BODY
tag. FRAMESET
describes the frames to appear in the browser window.
FRAMESET
element.
http://server-name/cgi-bin/jwsamp/main
Using Style Sheets |
You can define the look of your Panther web application using style sheets. The style definitions can be included in the HTML document or be specified using a URL location.
For each screen, change the Stylesheet Source property to indicate that style sheets will be used.
stylesheet_source
)
stylesheet_type
)
stylesheet_data
)
stylesheet_link
)
For example, the following cascading style sheet specification would change all H1 headings to be in a sans-serif font, Arial if it is available, and to be red in color.
H1 { font-family: "Arial", sans-serif; color: red }
To specify styles for widgets, use the HTML Attributes property to enter the setting, as in:
STYLE = "..."
W3C has issued a recommendation on the use of style sheets. For more information, see their website at www.w3.org.
Creating Headings |
Headings can be used to give order to an HTML document. Browsers apply distinctive typefaces or styles to distinguish heading levels H1
through H6
.
<H1>
for heading level 1.</H1>
to end a level 1 heading.Drawing Horizontal Rules |
A horizontal rule visually divides the contents of an HTML document. You can use it to group together similar controls or to make the page easier to read.
SIZE=4
specifies a line thickness of 4 pixels which results in the HTML output of <HR SIZE=4>
.Using Cookies |
Cookies are pieces of information from the browser side of a connection. After a cookie is set by an HTML document, it is stored on the browser and can be retrieved when the browser contacts the same HTTP server.
Cookies are best used for simple, persistent, client state information, such as a user ID, the date, or the number of times the client visits a specific URL. If the cookie specification includes an expiration date, this information is saved on the browser and is available in subsequent browser sessions by the same user.
The cookie must initially be set by an HTML document—in a Panther Web application, by calling sm_web_set_cookie. For example, the following screen entry function retrieves two cookie values, user and visit_num
. visit_num
is then incremented by 1 and sm_web_set_cookie resets the corresponding cookie to its new value:
proc entry
user=sm_web_get_cookie("user")
visit_num=sm_web_get_cookie("visit_num")
visit_num=visit_num+1
call sm_web_set_cookie("visit_num=:visit_num;\
expires=Monday, 03-Jan-2000 00::00::00 GMT; \
domain=.prolifics.com; path=/samples")
Cookies are retrieved when a browser requests a URL from an HTTP server. The browser compares the value of the URL with the domain and path of any cookie values stored on the browser. If any of them match, a line containing the name=value pairs of all matching cookies is included in the HTTP request.
Cookie values can be retrieved in your Web application with sm_web_get_cookie, as illustrated in the previous example. They are also available in the CGI variable @cgi_http_cookie.
The Panther Gallery sets and retrieves cookie values in a documentation sample entitled Client-side Cookies
which is accessible from the Web application server:
http://server-name/cgi-bin/jwsamp/main
Embedding Java Applets |
You can embed Java applets into your Panther Web application to create attractive and interesting Web pages with animation, scrolling text, and banners. Java applets are built with Java, an object-oriented programming language. A Java applet is not a standalone program; it must be embedded within an HTML document and is triggered by a JavaScript event. Java applets can run only in a Java-compatible browser.
If you include Java applets in an application, take into account these limitations:
To incorporate a Java applet into a Web application, you need this information:
To embed a Java applet into your Panther screen:
APPLET
tag and its argumnts.<APPLET CODE="TickerTape" WIDTH=300 HEIGHT=40 ALIGN=top>
<PARAM NAME=fontsize VALUE="20"> <PARAM NAME=message
VALUE="This is my sample Java applet!">
In this example, Panther looks for a file named TickerTape.class.
</APPLET>
In the Panther Gallery, the TickerTape applet is modified through Panther properties. The sample screen JavaApplets is on the Web application server:
http://server-name
/cgi-bin/jwsamp/main
Refreshing Screens in a Web Browser |
If your screen contains information which needs to be updated frequently, you can either have the user refresh the screen in the Web browser by pressing the Reload button or have the screen automatically refresh itself using the META tag. For this task, the META tag format is:
<META HTTP-EQUIV="refresh" CONTENT="seconds
; URL=URL_location
">
Another use for this tag would be for an online slide show with the URL for the next screen in the META tag. This technique is known as client pull since reading the HTML document into the Web browser activates the process.
Under Web Options, enter the META tag in the Head Markup property. For example, the following entry refreshes a screen each minute:
<META HTTP-EQUIV="refresh" CONTENT="60; URL=myapp.scr">
Using ActiveX Controls |
For ActiveX controls to be available in your Web applications:
In Panther Web applications, the control's properties can be set using the JPL property syntax or in JavaScript or VBScript functions. Methods can be called using JavaScript or VBScript. Event control must be specified using VBScript in Microsoft's Internet Explorer 4. With Internet Explorer 3, JavaScript can also be used for event handling.
In the Web environment, only Microsoft's Internet Explorer has native support for ActiveX controls, although most browsers have plug-in support.
In Internet Explorer, if a user accesses a Web document containing an ActiveX control not already registered on the user's system, Internet Explorer performs the following steps:
Using ActiveX Controls in Web Browsers
For Mozilla Firefox, one plug-in for ActiveX controls is IE Tab V2 at
https://addons.mozilla.org/en-US/firefox/addon/ie-tab-2-ff-36.
When an ActiveX control is embedded in a Web application, it is suggested that you digitally sign the control and set which licensing scheme (development or runtime) you want implemented.
In order to digitally sign controls, you will have to obtain a Software Publisher's certificate from a Certificate Authority, such as Verisign. It takes about a week to obtain this certificate. For information about signing controls and the underlying Authenticode technology, refer to Microsoft's website,
www.microsoft.com. The VeriSign site,
www.verisign.com, contains information about their certification program.
Digitally signing the control places your company's guarantee for the control. Therefore, you should check that the control only modifies the user's system as described in the ActiveX specifications.
In Web applications, any data submitted to the Web application server must be in an input field. Since ActiveX controls have no input fields, data must be transferred from the ActiveX control to Panther input variables using JavaScript or VBScript before the screen is submitted back to the Web application server.
This is typically done by copying the relevant information to hidden fields in the HTML. Such a hidden field is created by setting both the IdentityHidden property and the Web OptionsExport To HTML property to Yes. This generates an HTML The following JavaScript Here is the same function in VBScript. It is defined as the In order for the Web application to download the control, you must set the Codebase property (under Web Options) which lists either the URL for the ActiveX control file from the document root directory or the location relative to the application directory.
For example, the following entry in the Codebase property:
results in the following HTML, prepending the name of the current machine:
However, if the HTTP protocol is specified as part of the Codebase property:
the following HTML is generated, which downloads the file from the Web application server's documentation root directory:
When an application screen contains an ActiveX control, an When the Signing Your ActiveX Controls
Submitting Data to the Web Application Server
<INPUT>
element with the HIDDEN
attribute.
Submitting Data using JavaScript
onSubmit
function, called when the screen is submitted back to the Web application server, transfers data from the Value property of the PrlSpinner Controls back to the Panther variables:
function onSubmit()
{
document.main.i_1_len1.value =
document.main.PrlSpinner1.value;
document.main.i_1_len2.value =
document.main.PrlSpinner2.value;
document.main.i_1_len3.value =
document.main.PrlSpinner3.value;
} Submitting Data using VBScript
onClick
function associated with a push button.
Sub spo_1_button_onClick
document.main.i_1_len1.value =
document.main.i_1_PrlSpinner1.value
document.main.i_1_len2.value =
document.main.i_1_PrlSpinner2.value
document.main.i_1_len3.value =
document.main.i_1_PrlSpinner3.value
End Sub Generating HTML for ActiveX Controls
PrlSpinner.ocx
CODEBASE="http://
currentMachine
/my_app/PrlSpinner.ocx"http://prolifics.com/PrlSpinner.ocx
CODEBASE="http://prolifics.com/PrlSpinner.ocx"
OBJECT
tag is generated for the control container with PARAMETER
attributes for each of the ActiveX properties and a CODEBASE
attribute containing the URL for the ActiveX control. The following example is the OBJECT
tag for the PrlSpinner Control.
<OBJECT ID=i_1_spinner WIDTH=83 HEIGHT=30
CLASSID="CLSID:DA2599CE-F939-11D0-A19E-00A02481A2E9"
CODEBASE=""http://prolifics.com/src/PrlSpinner.ocx"">
<PARAM NAME="BlankIfZero" VALUE="0">
<PARAM NAME="Maximum" VALUE="100">
<PARAM NAME="Minimum" VALUE="0">
<PARAM NAME="Value" VALUE="25">
</OBJECT>OBJECT
tag is included in the HTML document, Internet Explorer performs the following steps:
OBJECT
tag and searches for the CODEBASE
attribute. If the CODEBASE
attribute is absent or is preceded by a URL-to-object index server in the CodeBaseSearchPath
, this index is used to retrieve the file.
CODEBASE
attribute.
CoCreateInstance
to create an instance of the specified object.
A ActiveX controls can run on Intel x86 computers, on the Apple Macintosh, as well as on any of several RISC machines. You need to create, test, and bundle your control's binaries for all deployed platforms.
.cab
file is one software distribution format for ActiveX controls. Part of the .cab
file is the binary and .inf
file needed to run on the associated platform. An .inf
file contains information used by Microsoft Windows to load and register an ActiveX control.
Embedding Sound |
A Panther web application can incorporate multimedia elements, including sound. Browsers such as Mozilla Firefox and Internet Explorer provide inline support for audio. The browser can play audio files provided two conditions are true:
Sounds are stored in different formats, known as MIME types (Multipurpose Internet Mail Extensions). The following table lists some standard MIME types:
Note:
To add MIME types such as Quick Time Movies, check your browser's documentation.
To embed a sound file in your application:
http://myserver.com/cgi-bin/proweb/sound1.au
To view a sound file in a Panther application, refer to the part of the Panther Gallery entitled Sound Files on the Web application server:
http://server-name
/cgi-bin/jwsamp/main