Documentation Agresso WebInfo 3 - UNIT4 Agresso · PDF fileSida 2(108) 2013-06-10 WebInfo 3.9...

108
Documentation Agresso WebInfo 3.9

Transcript of Documentation Agresso WebInfo 3 - UNIT4 Agresso · PDF fileSida 2(108) 2013-06-10 WebInfo 3.9...

Documentation

Agresso WebInfo 3.9

Sida 2(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Table of Contents

WEBINFO 3.9 - DOCUMENTATION ................................................................................................................. 7

OVERVIEW .......................................................................................................................................................... 7 Introduction ................................................................................................................................................ 7 Abbreviations .............................................................................................................................................. 7 WebInfo Product Overview ......................................................................................................................... 8 Word Definitions ......................................................................................................................................... 8 Requirements ............................................................................................................................................ 11

USER GUIDE ................................................................................................................................................ 12

USING WEBINFO EDIT MODE ............................................................................................................................... 12 The Object Menu ....................................................................................................................................... 13 The Context Menu ..................................................................................................................................... 13 Context Menu Added Controls .................................................................................................................. 13 Non-graphical Objects .............................................................................................................................. 14 Deleting Controls ....................................................................................................................................... 14 Editing Controls ......................................................................................................................................... 14 Copying and Pasting Controls ................................................................................................................... 14 Dragging and Dropping Single Controls .................................................................................................... 14 Selecting and Dragging Multiple Controls ................................................................................................ 15 Dragging and Dropping in Flow Layout Frames ........................................................................................ 15 Resizing Controls ....................................................................................................................................... 15 Creating Pages & Changing Page ............................................................................................................. 15

EDIT MODE TOOLS AND OPTIONS .......................................................................................................................... 16 Tools menu ................................................................................................................................................ 16 Settings menu ........................................................................................................................................... 17 Setup menu ............................................................................................................................................... 17 Recent menu ............................................................................................................................................. 19 Help menu ................................................................................................................................................. 19

OBJECTS ........................................................................................................................................................... 20 Frames ...................................................................................................................................................... 20 Controls ..................................................................................................................................................... 20 Variables ................................................................................................................................................... 21

BASE CONFIGURATION ......................................................................................................................................... 23 Start from an empty configuration ........................................................................................................... 23 Login .......................................................................................................................................................... 23 Permissions ............................................................................................................................................... 25 Data connections ...................................................................................................................................... 25 SQL ............................................................................................................................................................ 27 Limitations on SQL in WebInfo .................................................................................................................. 28 WSSQL ....................................................................................................................................................... 29 Multilingual support/Titles ....................................................................................................................... 29

CONFIGURATIONS ............................................................................................................................................... 31 Overview ................................................................................................................................................... 31 Include Configuration ................................................................................................................................ 31

EXPORT AND IMPORT VS. BACKUP AND RESTORE ...................................................................................................... 32 Overview ................................................................................................................................................... 32 Backup and Restore .................................................................................................................................. 32 Export and Import ..................................................................................................................................... 32 Partial Configuration Restore .................................................................................................................... 32

NAVIGATION ...................................................................................................................................................... 33 Common Properties................................................................................................................................... 33 Control Types ............................................................................................................................................ 33

TABLES ............................................................................................................................................................. 36 Overview ................................................................................................................................................... 36 The Ad Hoc Table Design ........................................................................................................................... 36

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 3(108)

Documentation

Agresso WebInfo 3.9

Additional rendering options .................................................................................................................... 36 Column Definitions .................................................................................................................................... 37 Row Definitions ......................................................................................................................................... 38 Create template table to reduce maintenance ......................................................................................... 39 Header table ............................................................................................................................................. 39 Filter content with input controls .............................................................................................................. 39 Zoom ......................................................................................................................................................... 39 Export Report ............................................................................................................................................ 41 Sorting a table ........................................................................................................................................... 41 Table Paging Modes .................................................................................................................................. 41 Table with input fields ............................................................................................................................... 42 Agresso forecast and periodical distribution............................................................................................. 43 Collapse/Expand rows ............................................................................................................................... 43 Mimicking The Ad Hoc Table Style ............................................................................................................ 44

PIVOTGRID ........................................................................................................................................................ 48 PivotGrid ................................................................................................................................................... 48

GRAPHICAL CONTROLS ......................................................................................................................................... 49 ChartFX and GaugeFX ............................................................................................................................... 49 Indicators .................................................................................................................................................. 50

EXECUTE OBJECTS ............................................................................................................................................... 51 ExecuteSql ................................................................................................................................................. 51 ExecuteScript ............................................................................................................................................. 51 Bounce ...................................................................................................................................................... 51 Execute Position ........................................................................................................................................ 51

ATTACHED OBJECTS ............................................................................................................................................. 53 Input Validation Controls .......................................................................................................................... 53 OnChange Controls ................................................................................................................................... 53 Value Picker Controls ................................................................................................................................ 53 Park Object ................................................................................................................................................ 53 Comment Object ....................................................................................................................................... 53

INPUT ............................................................................................................................................................... 55 Execute and Bounce Pattern ..................................................................................................................... 55 Initial value for input control ..................................................................................................................... 55 Pickers ....................................................................................................................................................... 55 Validation of controls ................................................................................................................................ 56 Dirty mark page ........................................................................................................................................ 57 Save Button ............................................................................................................................................... 57

DATAWAREHOUSE .............................................................................................................................................. 58 Populating a datawarehouse .................................................................................................................... 58 Filtering a datawarehouse ........................................................................................................................ 58 Displaying results from a filtered datawarehouse .................................................................................... 59 Using an In-Memory service to drive datawarehouse .............................................................................. 59 For more information ................................................................................................................................ 60

PAGE ACTION ..................................................................................................................................................... 61 Key mapping ............................................................................................................................................. 61

FILE HANDLING ................................................................................................................................................... 62 Adding the FileUploader and FileViewer controls ..................................................................................... 62 Maximum File Size .................................................................................................................................... 62 The blob object .......................................................................................................................................... 63

AGRESSO .......................................................................................................................................................... 64 Agresso roles ............................................................................................................................................. 64 Show documents from Agresso Document Archive .................................................................................. 64 Agresso Focused Controls ......................................................................................................................... 66

CUSTOMIZATIONS ............................................................................................................................................... 68 JavaScript .................................................................................................................................................. 68 Managed JScript........................................................................................................................................ 68 Jint ............................................................................................................................................................. 68 VBScript ..................................................................................................................................................... 68

Sida 4(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Lua............................................................................................................................................................. 69 CHANGE WEBINFO ”LOOK AND FEEL” ..................................................................................................................... 72

Customizing Initialization Titles ................................................................................................................ 72 Control appearance with stylesheet classes ............................................................................................. 72 Themes ...................................................................................................................................................... 72

PRINTING FROM WEBINFO ................................................................................................................................... 74 JavaScript Functions for Printing ............................................................................................................... 74 Considerations when Printing a Web Page ............................................................................................... 74

SECURITY .......................................................................................................................................................... 75 Common Security Threats ......................................................................................................................... 75 WebInfo Security ....................................................................................................................................... 75

INTERNATIONALIZATION ....................................................................................................................................... 83 Modifying the Database to Support Unicode ............................................................................................ 83

INTEGRATIONS ................................................................................................................................................... 84 Connecting Agresso to WebInfo ................................................................................................................ 84 Connecting Sharepoint to WebInfo ........................................................................................................... 84

WEBINFO LICENSING ........................................................................................................................................... 85 Licensing Data ........................................................................................................................................... 85 How to License WebInfo............................................................................................................................ 85

WEBINFO AS A WEB SERVICE ................................................................................................................................. 87 TROUBLESHOOTING WEBINFO .............................................................................................................................. 88

Showing Error Messages in Runtime ......................................................................................................... 88 Logging...................................................................................................................................................... 88 JavaScript Console ..................................................................................................................................... 88 Trace Server Code Execution Time ............................................................................................................ 89 Recording and Playback ............................................................................................................................ 89

WEBINFO TECHNICAL PERSPECTIVE ........................................................................................................................ 91 Technology ................................................................................................................................................ 91 Architecture............................................................................................................................................... 91

APPENDIX A ................................................................................................................................................ 93

TABLE ARCHITECTURE .......................................................................................................................................... 93

APPENDIX B ................................................................................................................................................. 95

3RD

PARTY LICENCES AND MENTIONS ....................................................................................................................... 95 GNU LESSER GENERAL PUBLIC LICENSE ............................................................................................ 106

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 5(108)

Documentation

Agresso WebInfo 3.9

Table of Figures

Figure 1: System overview ..................................................................................................... 91

Table of Tables

Table 1: Tree predefined columns .......................................................................................... 35

Table 3: Comparison WebInfo 2.x and 3.x ............................................................................ 91

Sida 6(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Table of Pictures

Picture 1: Login form ............................................................................................................. 12 Picture 2: WebInfo in editmode ............................................................................................. 13 Picture 3: PageLayout ............................................................................................................ 20

Picture 4: A start menu ........................................................................................................... 33 Picture 5: Toolbar ................................................................................................................... 34 Picture 6: Menuitem view ...................................................................................................... 34 Picture 7: Menu result ............................................................................................................ 34 Picture 8: A tabstrip ................................................................................................................ 35

Picture 9: Gauges.................................................................................................................... 49 Picture 10: Pie Chart............................................................................................................... 50

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 7(108)

Documentation

Agresso WebInfo 3.9

WebInfo 3.9 - Documentation

Overview

Introduction

The purpose of this document is to help consultants set up WebInfo solutions and to give a

description of the most important features in WebInfo.

The following will be covered:

Editing mode

Existing controls and how they work together

Creating different tables

Using controls for search and input

Verifying data with validators

Making adaptations

Changing ”Look and feel”

WebInfo installation, upgrading and licensing

The following will not be covered:

Creating data warehouse

Agresso technology

Programming in VBScript, JavaScript etc

ASP.NET technology

For more information:

WebInfo e-guides

https://esupport.unit4agresso.se/guides/FilterSearch.jsp?f=Webinfo

Documentation is always available from Help menu in WebInfo edit mode as

long as there is an active Internet connection.

Abbreviations

A list of abbreviations used in this document. Abbreviation Meaning Description

AJAX Asynchronous JavaScript And XML

AJAX is a web development technique for creating interactive web applications.

ASP Active Server Page(s) ASP is Microsoft's server-side script engine for dynamically-generated web pages.

ASP.NET Active Server Page(s) for .NET framework

ASP.NET is a set of web application development technologies marketed by Microsoft.

CSS Cascading Style Sheets CSS is a stylesheet language used to describe the presentation of a document written in a markup language like HTML.

HTTP Hypertext Transfer Protocol HTTP is a communication protocol used to transfer information on intranets and the Internet.

HTTPS Hypertext Transfer Protocol over Secure Socket Layer

HTTPS is the use of SSL together with HTTP for encrypting the HTTP communication.

HTML HyperText Markup Language HTML is the predominant markup language for the creation of web pages.

JavaScript JavaScript JavaScript is scripting language used in web pages to add client script functionality to the page.

OLE DB Object Linking & Embedding Data Base

OLE DB is an API designed by Microsoft for accessing different types of data stores in a uniform manner.

RSS Really Simple Syndication RSS is a family of web feed formats used to publish frequently updated

Sida 8(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

pages, such as blogs or news feeds.

SQL Structured Query Language SQL is the most popular computer language used to create, modify, retrieve and manipulate data from relational database management systems.

SSO Single Sign-On SSO is a specialized form of software authentication that enables a user to authenticate once and gain access to the resources of multiple software systems.

URL Uniform Resource Locator The address of a web page on the world wide web.

VBScript Visual Basic Scripting Edition VBScript is an Active Scripting language interpreted via Microsoft's Windows Script Host.

XML eXtensible Markup Language XML is a W3C-recommended general-purpose markup language that supports a wide variety of applications.

WebInfo Product Overview

WebInfo is a web site design tool running on IIS that based on a configuration collection,

stored in file or database, renders a web site with full connectivity to your real time business

data. WebInfo allows for powerful integration with the Agresso ERP System as well as other

systems using SQL queries, specialized web controls and web services. Data can be

presented through a wide range of flexible web controls such as tables, charts, tab strips and

menus, that can be further customized by web designers using standard CSS style sheets.

Many systems can leverage from using WebInfo as their web user interface layer, adding

functionality currently not supported by the existing system, ERP system or business logic.

Examples include collecting data from non integrated systems within the business and

presenting them in the same page to simplify data mining or to utilize the data input

functionality of WebInfo to build full web applications that integrate with existing ERP

systems.

Even though WebInfo has several advanced controls for integration with the Agresso ERP

systems it is designed to function as a separate product and can also be used to create any

web application such as helpdesk web interfaces, frontends to other 3rd

party services and

more.

Word Definitions

Throughout this document we will be using the following wording to describe WebInfo’s

different parts and features:

Solution – a WebInfo web site.

Configuration – information about the appearance and behaviour of WebInfo or of a part of

a WebInfo solution, separated in such a way that it cannot interfere with other

configurations.

Configuration Collection – a collection of user created configurations and WebInfo system

configurations; stored in either file or in database. A solution always has exactly one

configuration collection in use. Configuration Collections can be backed up and restored as

a whole or by its configuration parts.

Page – a collection of controls and rules displayed or evaluated at the same time in the web

browser window.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 9(108)

Documentation

Agresso WebInfo 3.9

PageId – name of a page.

Page Object – a container that holds parameters controlling the behaviour of controls and

rules on a given PageId.

Master Page Object – a global page object whose settings function as defaults for all other

pages. Master page settings are always overridden by more specific page settings.

WebInfo Object – any configurable unit in WebInfo that can be used to create a page’s

content; attached either to the page through its PageId or by being attached to other objects

that are attached to the page.

WebInfo Control (or just control) – a visible WebInfo object.

Input Control – a WebInfo control that allows the user to input data, e.g. text boxes and drop

down controls.

Object Property (or just property) – a setting of a WebInfo object.

Page Property – an object property on a page object.

Variable – a value container that can be referenced in a configuration by name to set or

retrieve its value. In SQL statements or in object properties it can be referenced by typing a

colon directly followed by its name, e.g. “:myvar”. All input controls generate variables

containing the value in the control. They are always named <name of control>_value

meaning a drop down called mydropdown would generate a variable containing its value,

referable by typing “:mydropdown_value”.

Variable Data Type – a constraint on a variable that states what type of data can be stored in

a variable with a given name and what should be its default value if no value or an illegal

value is submitted. Examples of data types are string, integer and decimal. Variable Data

Types are stored as part of the configuration.

Protected Variable – a variable whose value can only be changed by EEXXEECCUUTTEESSQQLL and

EEXXEECCUUTTEESSCCRRIIPPTT objects. WebInfo has a number of internal protected variables with reserved

names.

Parameter – a protected variable with a constant value and data type that be used to store

static values in the solutions. Parameter values are loaded during page load. Parameters are

stored as part of the configuration.

PageId Parameter – a parameter that has its value set on a specific page.

Central Parameter – a parameter whose value is set on all pages unless overridden by a

PageId Parameter.

IIS Session – the IIS’s (the web server’s) session memory. This is where the web server

remembers variables, user information and other data that should be remembered between

page reloads. If you recycle the IIS application pool or restart the IIS you will lose the IIS

session. When a user loses IIS session state it will be logged out. All tabs in a web browser

will share the same IIS session.

Sida 10(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

WB Session – WebInfo’s sub memory partitions within an IIS session that allows a solution

to have multiple separate windows running the same configuration with separate variable

collections. All windows created in WebInfo using CTRL+N will have a separate WB

session. Parameters and data types can be made global across all WB sessions within an IIS

session, this allows windows (with separate WB session) to share data.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 11(108)

Documentation

Agresso WebInfo 3.9

Requirements

Requirement for the web server:

Operating system Windows 2003 or 2008 Server. Windows 7 and Windows 8

can be used for development, tests and demonstration

The web server Internet Information Services 6-8

(IIS 6 compatibility mode on Windows 2008 Server, Windows 7 and Windows

Vista)

.NET Framework 3.5 SP1

x86 platform or x64 platform

If Oracle database should be used to store configuration the Oracle client needs

to be installed

Browser supported by the client:

Internet Explorer 6 (runtime and pre 3.7 features only)

Internet Explorer 7

Internet Explorer 8

Internet Explorer 9

Internet Explorer 10 (runtime only)

Firefox 21

Chrome 27

Recommended browser to use in WebInfo editing mode:

Chrome

Internet Explorer 9

The hardware recommendation is the same as for Agresso Self Service. A dual core server

with 4GB of memory handles up to 50 concurrent users.

Sida 12(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

User guide

Using WebInfo Edit Mode

After WebInfo has been installed all configuration is carried out in the editing mode of

WebInfo. Menus, tables, controls etc are inserted into the application itself. To start the

editing mode, press down Ctrl+E when in the WebInfo program. If the user is locally

connected to the server where the WebInfo program is installed, the user is automatically

authorized to edit. WebInfo will otherwise display a login form as shown below.

Picture 1: Login form

This login will be authorized against WebInfo’s own control table and has got nothing to do

with the business system login. Only a login with WebInfo SSeeccuurriittyyLLeevveell 1000 or higher

gives full editing permissions. The account that is created during setup will have this

security level.

After login the user will return to the page they started from, but now with access to a new

tool menu and a possibility to right click in the browser window to add new controls or to

change existing controls.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 13(108)

Documentation

Agresso WebInfo 3.9

Picture 2: WebInfo in editmode

The Object Menu

The Object menu consists of a number of useful functions and links to the different edit

forms, one for each object in WebInfo. The edit form links are structured in different groups

to make it easier to find the right form.

A typical edit form presents a table showing all occurrences of an object in the current

configuration.

The edit form gives total access to all objects and their properties. Objects can be created,

maintained and deleted.

The Context Menu

By right clicking somewhere in the browser window the user will gain access to a context

menu for the selected control or page layout frame. The context menu is useful when a

control is created, deleted or managed. When a control is created via the context menu

WebInfo will fill in the basic information for the control automatically, for example the

name of the control and its position.

The context menu looks different if the user right clicks on an existing control. It is then

possible to change the properties or to delete this control. Controls with frame properties can

also add sub controls, these are controls that are located inside the frame and follow when

the frame is moved.

Only graphical objects, controls, can be added in the top, bottom, left, right and main frame.

Context Menu Added Controls

Some controls can be attached to existing controls as properties. These include the input

VVAALLIIDDAATTIIOONN controls, the OONNCCHHAANNGGEE controls, the value PPIICCKKEERR controls, the PPAARRKK property

and the CCOOMMMMEENNTT object. These can be accessed and added to a control using the context

Sida 14(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

menu. A more extensive explanation of these objects can be found in the section about

attached objects.

Non-graphical Objects

Some objects have no graphical representation, yet they are connected to a page. These

objects can be added, deleted and modified by accessing the context menu in the super top

frame, a special frame placed at the far top. In this frame only non-graphical objects can be

added and they will be displayed in groups together with other objects of the same type.

Deleting Controls

The context menu choice “Delete” allows the user to delete a control. As a security measure,

the user will be asked again if they really want to delete the object in a pop-up window.

Editing Controls

If “Edit…” is selected in the context menu for an existing control, the properties of the

control can be changed in a new window. The new window contains an edit form for the

selected object complete with all its properties. Accordingly, the edit form look will vary

depending on object.

At the bottom of the edit menu is an option that allows the user to decide how to refresh the

control after saving the new values. “FullReload” reloads the entire page. “QuickReload”

only reloads the current object. This can sometimes fail if there are object dependencies.

“NoReload” doesn’t refresh anything; it can be useful when you want to make changes to

several objects at once. When you are done with your changes you refresh the entire page.

Copying and Pasting Controls

The menu choice “Copy” allows the user to copy the description of a control into WebInfo’s

internal clipboard. By right clicking on the working surface and selecting paste from the

surface’s context menu you can paste a duplicate of the object that is currently residing in

the clipboard. The clipboard is kept for the session, so it is possible to copy a control on one

page, change PageId, and paste it on the new page.

Dragging and Dropping Single Controls

Controls can have their position changed by altering the X and Y coordinates of the control

directly in the Edit window of the control. This provides the most precise manipulation of a

controls position. For the purpose of working up a design, simply dragging the control

around using the mouse might be more preferable though.

To drag a control across the canvas you simply hold down the Ctrl-key and click and hold

down the left mouse button over the control you wish to move; drag the control and then

release the mouse button where you want to drop it. The control will shift a little after

dropping the control to snap into the grid.

Controls can also be moved between frames this way, by dragging the control so that your

mouse pointer is directly above the frame in which you wish to place the control and then

dropping the control.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 15(108)

Documentation

Agresso WebInfo 3.9

Selecting and Dragging Multiple Controls

By pressing down Shift + Control simultaneously and then holding down the left mouse key,

it is possible to select multiple controls on the page using a Windows-like lasso selection

tool. The selected controls can then be dragged simultaneously between frames. Make sure

to keep both keys depressed continuously throughout the dragging or the controls will be

deselected and the dragging will stop.

Dragging and Dropping in Flow Layout Frames

In a frame with Frame Layout set to Vertical- or Horizontal Flow dragging and dropping

behaves slightly differently. When dragging a control into such a frame it will automatically

snap into a position following the Flow Layout rule set on the container. This means that

inside such a frame it is impossible to absolute position an object. The positioning inside the

frame instead depends on the contained objects sort order, ordering them from low to high.

By dragging a control to a different position in the frame, you also change the sort order of

the controls to match the new order.

Resizing Controls

The most exact way of changing the size of a control is by altering the width and height

property of the control using the Edit window. For the purpose of creating a design base it

can be practical to instead resize controls using the mouse and a Windows like drag-drop

manner.

To resize the control using the mouse - simply pull in the small pale blue drag handle in the

controls right lower corner. By holding down Shift while dragging it is possible to perform a

proportional resize.

Creating Pages & Changing Page

To add a new page, simply click the “Add New Page”-button in the Edit Toolbar at the top

of the page. This will display an edit window where you can name the page, set a title to it,

and configure all the page specific parameters.

To change page, click “Go To...” in the Tools menu, alternatively press Ctrl + G, and type

the name of the page in the text field and click Ok.

If no page exists for the given PageId supplied in the Go To-window, WebInfo will ask you

if you want to create a new page object for the current page.

Sida 16(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Edit Mode Tools and Options

Tools menu

This menu is full of useful functionality allowing you to undo changes, restore deleted

objects, jump between pages and more.

Below are some of the functionalities that can be useful while creating your solution.

Trash… Opens up a grid view of all deleted objects from where you can

restore them to their previous state. If you choose to empty your

trash, all objects in it will be permanently removed and can no

longer be restored.

Undo…

(Ctrl + U)

Displays a table with recent actions sorted by when they

occurred. By clicking the plus sign you get to see more

information on what was performed, and by clicking an entry

you revert your solution to the state it was in before that action

was performed. All actions after and including that action will be

undone. You cannot undo an undo action.

Go To…

(Ctrl + G)

Displays a small window where you can type any Page id you

wish to go to and then press the OK button or hit return to go

there.

Quick Search…

(Ctrl + Q

Displays a small window where you can type the name of an

object view e.g. Button or Textbox. As you type it will suggest

object views that match your text. When you found the object

view you wish to open you press OK or hit return and the

selected object view will open up in the edit grid.

Useful for when you do not want to search the object menu and

know which object view you want to edit.

Show SQL

(Ctrl + 2)

Shows the SQL code that was executed during Page load.

Show Variables

(Ctrl + 3)

Displays all variables available on the current Page and their

current values.

View Last Log

Entries…

Displays the entries added to the log file since the last page

reload. The entries are displayed even though logging to file is

disabled.

For more information on logging, reference later chapters of this

manual.

Open Log File Displays the content of the log file in use. If no log file is used

then a warning message will be displayed.

Useful when debugging remote.

Reload Cache

(Ctrl + 0)

Empties the server cache and forces a reload. Useful when

something seems not to act as intended when developing, as web

server caching does increase speed dramatically but also allows

for old data to be stored and displayed when not intended.

Clear Session Removes your current session from the web server. Will result in

a log out if logged in and WebInfo exiting edit mode. Useful to

simulate a clean entrance into your solution.

Generate

Documentation

Generates a documentation of the solution based on all

documentation annotations added to the WebInfo objects.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 17(108)

Documentation

Agresso WebInfo 3.9

Analyze SQL Analyzes the SQL code used by the solution and presents a list

of SQL grant permission statements that can be used to create a

database user with only the necessary rights.

Start Recording Starts the recording of the current session and the result of all

SQL statements executed.

Stop Recording /

Playback

If currently recording, it stops the recording and saves the

recorded data in a recording file placed in the /_Backups

directory.

Run Diagnostics Runs a quick test on the server that will load the server CPU to

100% for about 10 seconds and measure how much processing it

could do in that time. Gives a score available in the

__koponen2008 variable. The score can then be used to compare

server performance.

Settings menu

This menu contains settings that let you influence how WebInfo operates, especially in

editing mode.

Limit data to 50

rows

This option allows the user to tell WebInfo that it should not

fetch more than 50 rows when rendering tables in edit mode. The

choice to limit data can be used while developing to avoid large

data collections and a slow development environment.

Disable bounces

(Ctrl + B)

Tells WebInfo to ignore bounce objects. This option is useful

when you need to debug or edit a page that would normally

transfer you to another page. A button will be created in the

menu that can be clicked to bounce manually.

Order sqls by

performance

Show SQL window content will be sorted on query time taken

instead of chronological order.

Show Agresso

objects

This option allows users that do not depend on agresso for data

to hide all menu options regarding the Agresso ERP.

Edit level The number of WebInfo properties available can sometimes be

overwhelming. A user who knows that he will only be using the

most common properties can choose to set a lower edit level.

This will remove several advanced properties from the edit

forms.

Setup menu

In this menu you find functionality for manipulating configurations and integrating your

WebInfo solution with Agresso. The below restore and import actions does not patch

WebInfo so the same version has to be used both in the destination and in the source or else

manual patching is needed.

Below are some of the functionalities that can be useful while creating your solution.

Configuration

Backup

The preferred way to back up your configuration.

This option backs up all configurations in your active solution.

Sida 18(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Configuration

Restore

This option restores all configurations in your selected solution

overwriting all configurations of the active solution.

Restore from

Backup ...

Displays a sub menu with the configuration files in your

_Backups directory for your solution and allows you to restore to

that backup by selecting it in the menu.

This option restores all configurations in your selected solution

overwriting all configurations of the active solution.

Download

Backup...

Displays a sub menu with the configuration files in your

_Backups directory for your solution and allows you to

download them to your local machine by selecting them in the

menu.

Restore

Recording

Displays a screen where you can start a playback of a recording

using a file dialog to select recording.

Restore from

Recording...

Starts playback of one of the recordings stored in the /_Backups

directory on the server.

Download

Recording...

Downloads the recording from the servers /_Backups directory

to your current machine.

Configuration

Export

Exports a configuration or parts of a configuration, on a control

by control basis, to a file.

Configuration

Import

Imports a file exported by the configuration export functionality.

Files must come from the exact same application version of

WebInfo and items will be added on a control by control basis to

the already existing configuration. Might create duplicate objects

if run multiple times.

Configuration

Remove

Removes a configuration instance from the configuration

collection stored in the WebInfo configuration file or table.

Partial

Configuration

Restore

Restores a configuration instance as a whole into an existing

configuration collection, removing any existing configuration

instance with the same name, but keeping existing configuration

instances with names different from the restored.

Install

Integration Act

Installs an ACT module in the Agresso instance referenced by

the AgressoConnectionId page property. This will install the

ACT into the Agresso database as well as create a new table

called wb_agrlogin that is used for secure login using the

Agresso URL login method.

Requires a correctly configured Agresso connection CCOONNNNEECCTTIIOONN

object, the AgressoConnectionId page property referencing the

correct Agresso connection and that this account has the proper

permissions on the chosen database.

This option is only available if the menu setting “Show agresso

objects” is enabled.

Edit Agresso

Smart Client

Menu

Displays a screen where you can create Agresso menus that open

WebInfo inside the Agresso client or in a separate browser

window. Requires that integration ACT has been installed to

work. Supported up to ABW 5.5.3.

Edit Agresso

Self Service

Menu

Displays a screen where you can create Agresso Self Service

menus that open WebInfo inside Agresso Self Service or in a

separate browser window. Requires that integration ACT has

been installed to work.

Setupsql Displays a number of SQL code blocks that can be used to

perform various tasks that might be needed during setup, e.g.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 19(108)

Documentation

Agresso WebInfo 3.9

creating a new configuration table in an Oracle database.

Charttypexml Presents a view of included xml templates that can be used when

creating CCHHAARRTTSS. Changes made here will affect all templates

used in CCHHAARRTTSS throughout the solution.

Gaugetypeml Presents a view of included xml templates that can be used when

creating GGAAUUGGEESS. Changes made here will affect all templates

used in GGAAUUGGEESS throughout the solution.

Recent menu

This menu will show the last five object views you have edited in alphabetical order. By

clicking any one of them you will open the edit grid for the selected object view filtered on

the current Pageid.

Help menu

This menu contains a link to the online e-guides, providing easy access to how-tos on many

parts of WebInfo. You can also open the about screen to view information about the current

installation, such as installation directory, application version, number of licensed users and

installation key.

Sida 20(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Objects

Frames

All controls in WebInfo are placed in frames. The property FFrraammeeNNaammee indicates which

frame the control will be placed in. The controls can be placed in frames that are created in

the solution like FFIIEELLDDSSEETT and FFRRAAMMEESSEETT etc. or of the predefined PPAAGGEELLAAYYOOUUTT frames created

by WebInfo.

By default WebInfo contains three predefined frames, namely _MENU, _TOOLBAR and

_MAIN. Changing the PPAAGGEELLAAYYOOUUTT will add up to four more PPAAGGEELLAAYYOOUUTT frames: _LEFT,

_RIGHT, _TOP and _BOTTOM. If no FFrraammeeNNaammee is set for a control it will default to the

_MAIN frame.

PPAAGGEELLAAYYOOUUTT can be changed by right clicking on any of the PPAAGGEELLAAYYOOUUTT frames and

choosing “Edit Page Layout...” or “Edit Master Page Layout...”. Each Page can only have

one PPAAGGEELLAAYYOOUUTT and the page’s PPAAGGEELLAAYYOOUUTT setting will override the setting in the master

page. WebInfo contains a number of different PPAAGGEELLAAYYOOUUTT setups that might seem similar at

first but will display the cuts between the PPAAGGEELLAAYYOOUUTT frames differently; all contain the

_MAIN frame and a combination of side-, top- and bottom frames.

Picture 3: PageLayout

Controls

The definition of a control in WebInfo is that it can be placed in a frame (that means that it

has the property FFrraammeeNNaammee). There are a number of different types of controls:

Container control

A control that is used to group other controls. E.g. FFIIEELLDDSSEETT and FFRRAAMMEESSEETT.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 21(108)

Documentation

Agresso WebInfo 3.9

Input control

A control that allows data to be inputted with it. E.g. DDRROOPPDDOOWWNN and TTEEXXTTAARREEAA.

Button control

A control that is clickable and triggers an action. E.g. BBUUTTTTOONN and

AAPPPPLLIICCAATTIIOONNBBUUTTTTOONN.

Link control

A control that is clickable and usually links the user to another page. E.g. LLIINNKK and

TTRREEEE.

Navigation control

A control that is used for navigating around in the solution. E.g. MMEENNUU and

NNAAVVIIGGAATTIIOONN.

Display control

A control that is used to display some data. E.g. IIMMAAGGEE and TTEEXXTT.

Table control

A control that is used to present a table. E.g. TTAABBLLEE and CCOOLLUUMMNN.

Chart control

A control that is used to display graphical representations of data. E.g. CCHHAARRTT and

GGAAUUGGEE.

Agresso control

A control that is used to display data from Agresso. E.g. AAGGRREESSSSOOPPEERRIIOODD and

AAGGRREESSSSOODDRROOPPDDOOWWNN.

Other control

Controls that for some reason did not match one of the above groups. E.g.

SSIILLVVEERRLLIIGGHHTT and SSCCRRIIPPTT.

Variables

Variables are a central concept in WebInfo solution development. It is how values are shared

between objects on the page or across pages. Without the use of variables the page’s content

would be static and not able to respond to user input. The following is copied from the Word

Definition chapter:

Variable – a value container that can be referenced in a configuration by name to set or

retrieve its value. In SQL statements or in object properties it can be referenced by typing a

colon directly followed by its name, e.g. “:myvar”. All input controls generate variables

containing the value in the control. They are always named <name of control>_value

meaning a drop down called mydropdown would generate a variable containing its value,

referable by typing “:mydropdown_value”.

Variable Data Type – a constraint on a variable that states what type of data can be stored in

a variable with a given name and what should be its default value if no value or an illegal

value is submitted. Examples of data types are string, integer and decimal. Variable Data

Types are stored as part of the configuration.

Protected Variable – a variable whose value can only be changed by EEXXEECCUUTTEESSQQLL and

EEXXEECCUUTTEESSCCRRIIPPTT objects. WebInfo has a number of internal protected variables with reserved

names.

Parameter – a protected variable with a constant value and data type that be used to store

static values in the solutions. Parameter values are loaded during page load. Parameters are

stored as part of the configuration.

Sida 22(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

PageId Parameter – a parameter that has its value set on a specific page.

Central Parameter – a parameter whose value is set on all pages unless overridden by a

PageId Parameter.

In other words if you want your dropdown control to choose which database table to display

content from on your page you would: populate the control with the names of the tables and

use the <dropdownname>_value variable in your SQL code that selects data for your table

control on your page. If you only want certain user to see the data you could use the

WebInfo internal protected variable :user to limit the query.

If you have the same solution in both a test and a production environment and this should

affect the data selection, you could define a parameter in your web.config file or in the

configuration that contained different values depending on environment and then use this

parameter as a variable in your query.

Example:

<add key="WebInfoVariable:mytestvariable" value="My test text" />

Sometimes a user might want to instantiate a variable that contains values other than that of

a pure input control. Then you could create your own variable in the configuration to hold

this value and use it as input to e.g. a selection statement. You would often want it to be

protected as the user could otherwise tamper with it and thereby circumvent the security that

you built into the solution. The correct way to do this would be to create a variable data type

that you give a name and a type and mark as protected. Then you set the value of the new

variable using an EEXXEECCUUTTEESSQQLL object. Since the variables used to set the value are protected

and the EEXXEECCUUTTEESSQQLL object only can be configured by the administrator, which is you, the

new value of your protected variable can also be used in your SQL statements with the same

level of security.

In edit mode it is easy to get a list of all the variables that are in use and their values. To

show the list click on the menu item Tools->Show variables… or press CTRL + 3.

Variables can be used as SQL parameters in a parameterized SQL statement. This does not

require any change to the variables but require you to reference them by adding the colon

sign and the at-sign in front of their names instead of just the colon sign, eg. :myvariable

becomes :@myvariable when referenced as a parameterized SQL parameter.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 23(108)

Documentation

Agresso WebInfo 3.9

Base configuration

Start from an empty configuration

During installation the user will have an option to either start from an empty config or start

with a predefined template containing some sample controls. The objects in the sample

template are there to provide a foundation to build upon and can be removed if needed.

Before continuing it is a good idea to plan ahead, think about what pages the configuration

will consist of, how to navigate between these and so on. Every page is identified and

referenced by the PPaaggeeIIdd property and can hold a Page object defining its parameters and

properties.

All page properties can be found on the page object or the master page object.

Login

WebInfo supports a number of different login types. The login type is set with the page

property AAuutthh. The supported types are:

None – No authentication is performed.

Windows – The windows account of the current user is read and set in the variable

user. All AD user groups that the user belongs to are also set in the protected

variables user_groups and user_groups_sql (comma separated list of groups with the

SQL string character around them). If WebInfo fails to read the windows account the

login will fail. This login type requires Windows integrated security to be configured

on the virtual directory.

Form – The built-in user handling in WebInfo is used. A login form is shown when

the user tries to access WebInfo. The users are managed within the WebInfo

solution. The variable user and all user properties are set as variables prefixed with

“user_” if the login was successful.

Agresso_url – Login from Agresso with user and client set as URL parameters on a

URL that links to WebInfo. For this to work the server that links to WebInfo must

provide a secure key in the URL which is time limited and verifiable in the Agresso

database. WebInfo validates the user and the key against the credentials sent on the

URL. If the user is valid the user will be redirected to the start page with the

variables user, user_id, resource_id, role_ids and role_ids_sql (comma separated list

of role_ids with the SQL string character around them) set. If the user is invalid an

error message is shown.

Agresso_sso – Login to WebInfo via Agresso SSO. WebInfo validates the user via

Agresso SSO. If the user is valid, the user will be redirected to the start page with

the variables user, user_id, resource_id, role_ids and role_ids_sql (comma separated

list of role_ids with the SQL string character around them) set. If the user is invalid

an error message is shown.

Openid – This authentication type will display a textbox where the user can fill in its

openid. The website will then redirect to the user’s openid provider and allow it to

log in. By setting up additional properties on the page object, it is possible to instruct

WebInfo to fetch additional details about the user from the openid provider and store

them in variables.

Facebook – This authentication type requires that a facebook developer account is

used to create a facebook web app. After filling in the appid and appsecret on the

Sida 24(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

page properties, the user can be redirected to facebook to login with its account. By

setting additional properties on the page, WebInfo can ask for higher permissions

from Facebook and store additional user details in variables.

Facebookbutton – Same as Facebook,, but the user is shown a WebInfo login screen

with a facebook button that opens a popup allowing them to login.

Tokenlogin - The plugin enables a token based login from an external system to

WebInfo. A token is sent as a URL or form parameter which is used to reverse look

up a user from a database table defined in the web.config file.

Setup Instructions

1) Add the following appSettings to the WebInfo web.config file and change the

values to match your setup:

<add key="WebInfoTokenLogin:TokenVariable" value="token_urlvalue"/>

<add key="WebInfoTokenLogin:ConnectionId" value=""/>

<add key="WebInfoTokenLogin:Table" value="wb_tokenlogin"/>

<add key="WebInfoTokenLogin:TokenColumn" value="token"/>

<add key="WebInfoTokenLogin:UserColumn" value="user"/>

2) Set page property Auth to tokenlogin

AppSettings

WebInfoTokenLogin:TokenVariable - Name of the variable containing the token

value

WebInfoTokenLogin:ConnectionId - Connection id to the database where the

token table is located

WebInfoTokenLogin:Table - Name of the token table

WebInfoTokenLogin:TokenColumn - Name of the column containing the token

value

WebInfoTokenLogin:UserColumn - Name of the column containing the user

Custom – It is possible to write a custom login method for WebInfo. This option is

only for .NET programmers. As of yet there is no official documentation or e-guide

for this, and instructions are only available upon request. To develop custom logins

you must sign your developer public key with the WebInfo developer team.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 25(108)

Documentation

Agresso WebInfo 3.9

The client variable is protected, and the recommended way to change client is by forcing the

solution to perform a new login. Forcing the solution to perform a new login can also be

used when you want to keep the “user” and “client” variables when switching between

configurations. You can force the solution to perform a new login by adding the URL

parameter login=1 to the URL of a link on your page. If you want to switch client as you

switch configuration, the URL should also have the text “client=<new client name>” added

to it. The forcing of a new login will only work if the page properties AAggrreessssooCCoonnnneeccttiioonnIIdd

and AAuutthh are the same for the two configurations and pages.

Permissions

There are two types of permission objects in WebInfo: PPAAGGEEIIDDPPEERRMMIISSSSIIOONN which sets the

permissions for a whole page and CCOONNTTRROOLLPPEERRMMIISSSSIIOONN which sets the permissions for a

single control. Both permission types share the same properties for authorizing if a user is

granted or denied access to a control or page. When access to a control or page is denied a

DDeennyyAAccttiioonn is taken by WebInfo. The possible DDeennyyAAccttiioonnss are hide, redirect and disable

(only applicable on controls). The hide DDeennyyAAccttiioonn hides the control for a control’s

permission or hides all the controls on a page for a PPAAGGEEIIDDPPEERRMMIISSSSIIOONN. The disable action

works in the same manner but disables controls instead. The redirect DDeennyyAAccttiioonn redirects

the user to a different page.

There are different methods that determines whether a permission is granted or denied, e.g.

granted by role or a sql statement. For more information regarding this – see the chapter on

security. It is enough that one permission grants access for access to be granted.

It is also possible to control when a permission object should be applied. By using the

ApplyTo property of the permission object, the configuration developer can decide whether

the permission should only be applied during report exports, page rendering or both.

Data connections

Sida 26(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Data connections are represented in WebInfo by the CCOONNNNEECCTTIIOONN object. WebInfo allows

connections to a number of different data sources with the help of a connection string. The

connection string can be one of the following:

Native .NET - A connection string to connect directly to an Oracle or MS SQL

Server database. This connection accesses the database directly without going

through the OLEDB or ODBC layer and is therefore faster than those two.

OLE DB – A connection string to connect to an OLE DB data source. This type of

connection string is primarily used in WebInfo to connect against different relational

databases e.g. MS SQL Server, Oracle, MySql, Informix etc.

ODBC - A connection string to connect to an ODBC data source.

WebService – A connection string that allows WebInfo to connect to a web service

e.g. Agresso Query Engine etc.

RSS feed – A connection string that allows WebInfo to connect to an RSS feed. RSS

feeds are commonly used by newspapers and other news service on the internet to

publish news in a stricter format that can be read by different viewers.

DataSet – A connection string that allows WebInfo to execute SQL statements

against the internal work table dataset in WebInfo. The internal work table dataset

contains the result from all executed SSQQLL object for a certain PageId. This means that

this connection type allows data to be joined from different kind of data sources such

as web service, MS SQL Server, Oracle etc. To select all the data from a SSQQLL object

with SSqqllIIdd 10 the following SQL statement can be used:

SELECT * FROM WorkTable_10

If a not previously executed SSQQLL object is referred to from a dataset query it will be

executed before the dataset query is executed.

LDAP – A connection that can be used to query the Active Directory.

SQLite – A connection that allows WebInfo to execute statements against a SQLite

database in memory or file.

Each CCOONNNNEECCTTIIOONN has a unique id which can be referred to in a SSQQLL object to use that specific

CCOONNNNEECCTTIIOONN when executing the SQL statement for the SSQQLL object. If no CCOONNNNEECCTTIIOONN is

specified for an SSQQLL object the default CCOONNNNEECCTTIIOONN is used. The default CCOONNNNEECCTTIIOONN will, if a

WebInfoData connection has been configured in the web.config, be the data CCOONNNNEECCTTIIOONN. If

no such connection string has been configured it will default to the WebInfoConfig

connection used to retrieve configuration data from the configuration table or if the solution

remains in file it will be the CCOONNNNEECCTTIIOONN object with the lowest sort value. WebInfo

connections can either be stored as an object in the configuration table or in Web.config,

filed under connectionStrings.

The name for the connection string used to reference the database containing the

configuration collection in the web.config file is called WebInfoConfigConnection.

Following the same pattern the connection string used to reference the database containing

the data to be used in the solution (can be the same as the WebInfoConfigConnection) is

called WebInfoDataConnection. Some object properties use the abbreviated version which is

WebInfoDat or WebInfoCon.

Sample connection strings:

MS SQL Server: o Native .NET:

Provider=sqlconnection.net;Data Source= agrdb;Initial

Catalog=agrprod;User Id=user;Password=password;

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 27(108)

Documentation

Agresso WebInfo 3.9

o OLEDB: Provider=SQLOLEDB;SERVER=agrdb;APP=WebInfo;DATABASE=agrprod;AutoTrans

late=No;Regional=Yes;User Id=user;PASSWORD=password; o ODBC:

Driver={SQL

Server};Server=agrdb;Database=agrprod;Uid=user;Pwd=password;

Oracle: o Native .NET:

Provider=odp.net;Data Source=agrprod;User

Id=user;Password=password;Integrated Security=no; o OLEDB:

Provider=msdaora;Data Source=agrprod;User Id=user;Password=password;

WebService: o Without header:

Provider=WEBSERVICE;Wsdl=http://localhost/WebInfo/WebInfoService.asmx

;ServiceName=WebInfoService; o With header:

Provider=WEBSERVICE;Wsdl=http://agrprod/agresso/QueryEngineService.as

mx;ServiceName=QueryEngineService;Header=AgrLoginInfo('sysse','AB','s

ysse')

RSS feed: Provider=RSS;Url=http://www.dn.se/huvudnyheter-rss

DataSet: Provider=dataset;

LDAP: Provider=ADsDSOObject;

SQLite o In file:

Provider=sqlite;MemoryStorage=file; o In shared memory:

Provider=sqlite;MemoryStorage=shared;

SQL

Many controls in WebInfo are able to read data using a SSQQLL object. The SQL that can be

used is database specific. If using a connection to a MS SQL Server database it is possible to

write T-SQL blocks for instance while Oracle supports PL/SQL.

There is no limitation of how large the SQL statement can be. If the configuration is stored

in a database, the actual SQL statement will be split over several rows if needed. This is

transparent to the user.

WebInfo supports a number of built in variables that can be used to comment out certain

parts of the SQL statement. The names of these variables begins with an identifier and then

the suffix “_comment_on” (for the start comment characters /*) or “_comment_off” (for the

end comment characters */). WebInfo currently supports the following variables:

super_comment_on/super_comment_off

These set of variables are activated (set to the corresponding comment

characters) when the current user is a member of the super role in Agresso.

[oracle|mssql|mysql|sqlite]_comment_on/[oracle|mssql|mysql|sqlite]_comment

_off

All variables but the ones corresponding to the active database are activated.

WebInfo has a number of built in database independent keywords and functions that can be

used instead of the database comment variables described above. These keywords and

functions are all prefixed with WSQL_. These are thoroughly described in the reference

manual.

Sida 28(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

WebInfo has a built in SQL Designer (utilizing ActiveX) which can be used to generate

SQL statements in a user interface that resembles the query designer in Microsoft Access.

This feature is only supported by IE browsers. The designer can be found on a separate tab

when editing a SQL statement, next to the edit tab.

WebInfo can include one SQL statement into another so that SQL statement can be used as

snippets. The syntax for including an SQL statement is as follows: <!-- #include sqlid_[SqlId of the SQL statement to include] -->

e.g.

<!-- #include sqlid_18 -->

Limitations on SQL in WebInfo

While SQL in WebInfo in many ways is a superset of normal SQL, there is some standard

SQL functionality that WebInfo does not support.

WebInfo does not support nested comments. While “SELECT /* /* test */ */

1” would normally be allowed in sql server, it is not allowed in WebInfo.

WebInfo does not support comments within strings except for the special

cases ‘/*’ and ‘*/’. E.g. SELECT ‘Test /* Test’ would cause an error in

WebInfo.

There are also some restrictions on the usage of WSQL-commands.

You can never nest a WSQL-command inside of another WSQL-command.

WSQL-commands are only meant to be used in their simplest form.

E.g. The following command is allowed:

“SELECT * FROM mytable WHERE WSQL_LIKE('col1', :@var1, '%')”.

However this command is not allowed:

“SELECT * FROM mytable WHERE WSQL_LIKE('col1',

WSQL_FORMATDATE(:@var1, ‘YYYY-mm-DD’), '%')”

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 29(108)

Documentation

Agresso WebInfo 3.9

WSSQL

WSSQL is a query language used in WebInfo to access data from a web service method.

WSSQL is an SQL derivative and allows the user to use the functions of the ADO.NET

library to select a number of columns from the data returned from a web service method,

renaming the columns, creating expression columns, filter the data and sort the data.

WebInfo understands simple data structures such as arrays, scalar values and more complex

.NET DataSets and DataTables.

WSSQL syntax: SELECT <select list>

FROM [Method name](<arguments>)

WHERE [ADO.NET row filter expression (see MSDN for more info)]

ORDER BY <sort condition>

<select list> ::=

{

[data column | expression (see MSDN for more info)] (AS [new column name])

} [ ,...n ]

<arguments> ::=

{

[Webservice method](<arguments>) | new [Webservice object](<arguments>) |

[API method (see reference)](<arguments>) | '[string value]' | [numeric

value]

} [ ,...n ]

<sort condition> ::=

{

[data column] [ASC | DESC]

} [ ,...n ]

WSSQL sample: SELECT description, 'http://agr/Agresso/Default.aspx' + QueryString AS url

FROM GetTaskList(:agresso_wscredentials)

ORDER BY description

Multilingual support/Titles

WebInfo can be used to create a multilingual solution with the help of TTIITTLLEESS, texts in

different languages that can be referenced through a single variable. WebInfo has two built

in types of titles: SSYYSSTTIITTLLEE, a title used by the WebInfo engine, and TTIITTLLEE, a title that is used in

a WebInfo solution. A TTIITTLLEE always overwrites a SSYYSSTTIITTLLEE, which can be utilized when

changing a SSYYSSTTIITTLLEE by adding a new TTIITTLLEE with the same id as a SSYYSSTTIITTLLEE instead of changing

the SSYYSSTTIITTLLEE itself. All SSYYSSTTIITTLLEESS are reset when WebInfo is updated. In addition to the built in

titles, WebInfo can also import titles from an Agresso database. To activate import of

Agressos internal titles in a solution the page property AAggrreessssooTTiittlleess should be enabled and,

if a different connection than the default should be used it is specified with the page property

AAggrreessssooCCoonnnneeccttiioonnIIdd.

The language that is used to select which titles are active is read from the users culture info

(a letter combination describing language and location for the user e.g. sv-SE, en-US, etc..).

The culture info can be set for a whole WebInfo installation by setting the variable

“WebInfoCultureInfo” in Web.config or be user dependent which means that the browser’s

culture info is used. When an Agresso login type is used the language of the Agresso user is

used to set the culture info. If a title is not available in your chosen culture it will default to

the culture set by “WebInfoCultureInfoDefault” in Web.config.

Sida 30(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Titles are used in a solution by writing the name of the title prefixed with the character $,

e.g. $mytitle. This can be used in most places where variables can be used, such as SQL

statements and many object properties.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 31(108)

Documentation

Agresso WebInfo 3.9

Configurations

Overview

A WebInfo solution can be split up in to different configuration instances so that parts of the

solution are isolated from each other. To switch to another configuration instance use the

“Switch configuration to...” option in the Tools menu.

Include Configuration

WebInfo can include one configuration into another which allows the included configuration

to work as a template for the new configuration. All modification made to the included

objects are saved in the new configuration. To include one configuration into another simply

set the Master Page property IInncclluuddeeCCoonnffiigg to the name of the configuration to be included.

To get a better understanding of what happens when changes are made to the objects in the

new configuration the following list displays possible actions and results:

Update – If the object is located in the included configuration the object is copied to

the new configuration then modified. If the object is located in the new configuration

the object is modified directly.

Insert – The new object is added to the new configuration.

Delete – If the object is located in the include configuration the object is marked as

deleted which will remove the object from the page but not from the configuration. If

the object is located in the new configuration the object is deleted and added to the

trash.

Because of how the include configuration technique works there are some things that should

be noted:

If an included object has been modified in the new configuration and the original

object changes in the included configuration, the changes will not propagate to the

new configuration.

If changes are made to the included configuration they will not propagate to the new

configuration before a “Reload Cache” action has been executed.

If an included object has been modified in the new configuration and the unique

identifier (e.g. PPaaggeeIIdd and CCoonnttrroollIIdd for controls) of the original object changes in

the included configuration, two objects will appear in the new configuration. The

first object is the modified original object from the included configuration and the

other is the previously copied and modified object in new configuration.

If an included object has been modified in the new configuration and the original

object in the included configuration is deleted, it will not be deleted from the new

configuration.

Sida 32(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Export and Import vs. Backup and Restore

Overview

A configuration collection, configuration or parts of a configuration can be saved and reused

in a different configuration. WebInfo supply a number of ways to do so depending on how

the data should be used.

Backup and Restore

When moving or copying the whole configuration collection, the configuration backup and

configuration restore is the recommended solution. Restore requires that both the target and

source WebInfo installation is of the exact same version or else manual patching is needed.

Backup and Restore will move the selected solution configuration as a whole and clear

existing old configurations from the destination solution before restoring.

Export and Import

For copying only parts of a configuration, a specific Page or even specific controls within a

Page, use the Export and Import option. This option is more vulnerable to advanced controls

being linked together loosely and will e.g. fail to correctly export and import controls

referencing variables for generating SQL or script code. This requires that both the target

and source solutions WebInfo installation is of the exact same version, e.g. 3.6.3532.1365.

Partial Configuration Restore

Partial Configuration Restore is used when you need to import only a specific configuration

within a solution. It uses the same mechanism as the Backup and Restore functionality

making it less sensitive to advanced uses of controls and minor version differences within a

release.

Partial Configuration Restore requires that both the target and source WebInfo installation is

of the exact same version or else manual patching is needed.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 33(108)

Documentation

Agresso WebInfo 3.9

Navigation

In WebInfo, navigating is essentially the same as changing the current PageId value.

Navigation controls, are the controls which lets the user do that.

WebInfo can also be forced to only load a specific control on a Page by setting the URL

parameter control_id to the ControlId of the specific control.

Common Properties

Target

WebInfos navigation controls have a property called TTaarrggeett associated with them. This

property, if set, tells WebInfo to open the link in a specified window or frame instead of

using the current window.

Whenever assigning a value to the TTaarrggeett property of a navigation control, it is possible to

use a frameset or fieldset container by prefixing the container id with “WB_” in order to

open the link inside the chosen container.

Control Types

Navigation

A navigation control displays the trail of page object titles as links. The control is normally

placed in a TTOOOOLLBBAARRPPAANNEELL. When a link on the navigation object is clicked the user is linked

to that page through a postback.

Start menu

Start menus are basically a list of links with optional descriptive texts that can be placed in a

page. Often this is used on the start page in order to navigate to different functions within

the solution. The link can be a PageId within the configuration or a complete HTTP URL.

The start menu can be built using SSTTAARRTTMMEENNUU controls and then placing them inside a

container with vertical flow.

Picture 4: A start menu

Toolbar

A TTOOOOLLBBAARR is a frame that contains toolbar items such as the TTOOOOLLBBAARRBBUUTTTTOONN control and

FFAAVVOOUURRIITTEE control. The TTOOOOLLBBAARR is placed in a TTOOOOLLBBAARRPPAANNEELL and can be positioned within

the TTOOOOLLBBAARRPPAANNEELL.

Sida 34(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Picture 5: Toolbar

Menus

MMEENNUUSS in WebInfo make it possible to add several functions to a page without taking up a lot

of space. MMEENNUUSS will expand when hovered over. When clicking a MMEENNUUIITTEEMM the action in

NNaavviiggaatteeUUrrll property will be started. This is often a JavaScript function such as saving a

table or navigating to another page.

A menu consists of a MMEENNUU control and several MMEENNUUIITTEEMM controls that belong to the MMEENNUU.

It is normally placed on the right side of the_MENU frame when using a solution title, or in

the _TOOLBAR when the title is missing. The menu is built hierarchically with the first

level having the menu as parentid, and the lower levels having a menuitem as parentid.

Picture 6: Menuitem view

Picture 7: Menu result

Tabstrip

A tabstrip consists of a TTAABBSSTTRRIIPP control and several TTAABBIITTEEMM controls that belong to the

TTAABBSSTTRRIIPP. Each TTAABBIITTEEMM has a name and an image that will be shown in the tab. A TTAABBIITTEEMM is

also a frame control that can contain other WebInfo controls. When a TTAABBSSTTRRIIPP is loaded; by

default only the controls of the active TTAABBIITTEEMM are loaded. This setting can be overridden

using the NNooLLaatteeLLooaadd property per TTAABBIITTEEMM. When a previously not selected tab is selected,

the controls of that TTAABBIITTEEMM are loaded via AJAX. Because of the on-demand loading via

AJAX, a TTAABBSSTTRRIIPP can reduce the time it takes to load a page with many controls. Some

controls, such as the pivotgrid cannot be loaded using AJAX, and tab items containing them

needs to be loaded with property NNooLLaatteeLLooaadd set to true.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 35(108)

Documentation

Agresso WebInfo 3.9

Picture 8: A tabstrip

Tree

A TTRREEEE control is used in WebInfo to present a tree structure. There are two different types

of TTRREEEESS,, a static and a dynamic tree. Both TTRREEEE types populate their nodes using a SQL

statement that contains a number of predefined columns:

Table 1: Tree predefined columns

node_id This is the identity of each node in the tree.

description Node text.

url Indicates what action should take place when a user clicks on a

node. It can be a pageid or a JavaScript function.

parent_id Node_id for parent node if any. Can be ‘0’ if no parent. If set to 0

the node will be put in the top level of the tree.

has_children ‘0’ if no children

‘1’ if node has children

image_url URL to a specific node image.

target Target frame to open URL in.

A static TTRREEEE loads all its nodes when the page is loaded. This can lead to some performance

problems when the TTRREEEE reaches sizes over a thousand nodes. The static TTRREEEE is therefore

more suitable when the number of nodes are limited to less than a couple of hundred. When

a static TTRREEEE has been loaded it is faster to navigate than a dynamic TTRREEEE.

A dynamic TTRREEEE only loads the nodes that are being displayed. When the user expands a

node the child nodes are loaded via AJAX. This TTRREEEE type has no limitation in size but can

be a little bit slower when expanding new nodes. To help build the SQL statement that

generates the nodes in the dynamic TTRREEEE, two extra variables are available to filter your

query:

treenode_parent_id – Id of the parent node to return child nodes for. This variable is set

to -1 when generating the root nodes.

treenode_depth – Depth of the child nodes to generate.

Sida 36(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Tables

Overview

A WebInfo table consists of a TTAABBLLEE control which has a number of row and column

definitions attached to it. The row definitions define properties for a grouping of rows

(header, sub headers, summary, sub summaries, detail etc) and the column definitions define

properties for specific columns within this grouping of rows. Row and column definitions

are linked to its table using the CCoonnttrroollIIdd property of the TTAABBLLEE. Row and column definitions

are linked together using a RowId, which is an identifier that consists of the RowId type,

level and row number e.g. h10.1. The RowId types that can be used are h (header row), s

(summary row), d (detail row), e (edit row) and i (insert row). A detail, edit or insert row

does not have level and is therefore written like d.1 without the level number. RowId level 0

is predefined as the header and summary level for the whole table. See Appendix A for a

more detailed description of how the row definitions RowIds work.

The TTAABBLLEE can be used for both displaying and saving data. The TTAABBLLEE has several SQL

statement properties: one for displaying data and a number of different SQL statement for

saving data also called edit SQL statements. The edit SQL statements are used for adding,

deleting and updating rows in the table.

The Ad Hoc Table Design

An ad hoc table is the method WebInfo uses to automatically design a TTAABBLLEE control based

on the supplied SQL selected data when no explicit table column and row definitions have

been supplied. An ad hoc table design can later be converted into an explicit table design for

further editing.

It is possible to control how the Ad Hoc Table is generated, and which functionality should

be present. Most of the options are controlled by adding additional named columns. The

format of these column names can be found in the table below.

An example of this type of controlled table rendering is grouping. Grouping can be used in

an ad hoc table to create header and summary break levels. This is achieved by adding

special recordset columns to the select SQL statement of the table. These recordset columns

should be named using row type and row level of the group that they belong to e.g. h10, s20

etc.

Additional rendering options

Recordset parameters can be used for controlling the layout and behaviour of the table. For

example when an input column displaying values from the recordset column “amount”

should be enabled or disabled for certain rows in the recordset, an extra column can be

added to the recordset called “amount_input”. This column value should be set to 0 for

hidden rows, 1 for enabled rows, 2 for disabled rows, 3 for rows rendered as labels, 4 for

rows that should not be rendered at all and 5 for a disabled row that can still be updated.

Further options for controlling the table behaviour using recordset parameters can be found

in the reference.

[RowId type][RowId level] Break value for the grouping

[RowId type][RowId level]_text Text displayed on the break row

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 37(108)

Documentation

Agresso WebInfo 3.9

Column Definitions

To be able to control all aspects of the appearance and behaviour of a column, it must be

converted from an ad hoc table into a standard table. This is accomplished by choosing

“Generate column and row definitions” from the TTAABBLLEE context menu. After that it is

possible to change properties and add new columns or delete them.

WebInfo currently supports the following column types:

Sql

Presents the value from the column in the recordset with the column name set in the

VVaalluuee property. This column type can also be used for zooming when used in

conjunction with other zoom properties. Zooming is the technique in WebInfo for

drilling down on a value or several values on a specific row in a table and displaying

the result on another page. The zoom information is collected from the properties

ZZoooommDDrriillllVVaalluueess, ZZoooommDDrriillllTTeexxtt, ZZoooommUUrrll and ZZoooommTTaarrggeett. The properties

TTaabblleeZZoooommCCoonnttrroollIIdd and EExxppaannddZZoooommCCoonnttrroollIIdd can also be used for zooming.

These properties are further explained in the chapter Zoom.

Label

Presents the text set in the VVaalluuee property. The text can contain title and variable

tags.

Button

Presents a button which can be used for zooming. The button text is collected from

the VVaalluuee property. The button column type supports normal zooming and

EExxppaannddZZoooommCCoonnttrroollIIdd. TTaabblleeZZoooommCCoonnttrroollIIdd is not supported by buttons.

Separator

Presents the text set in the VVaalluuee property with a leading separator. The text can

contain title and variable tags.

Edit

Presents an editable cell. Setting the VVaalluuee property to a column name populates the

cell with the value of the chosen column. If the EEddiittCCoonnttrroollIIdd property is set to an

existing TTEEXXTTBBOOXX,, TTEEXXTTAARREEAA,, CCHHEECCKKBBOOXX or DDRROOPPDDOOWWNN in the solution, that control will

act as template for the editable cell. The property CCoolluummnnNNaammee should always be set

for a column definition of type Edit. If the property CCoolluummnnNNaammee is not set, the

column cannot be referred to in an edit SQL statement.

Hidden

Hidden column that gets the value from the column in the recordset with the column

name set in the VVaalluuee property. This column can be referred to in an edit SQL

statement. This column type is useful for recordset id columns that need to be

accessible on the client side, but shouldn’t be visible.

PickerValue

In WebInfo it is possible to design a custom table to be shown when a picker

displays the filtered results. In order to know which value to return when a row is

clicked in the picker table, a special column type called PickerValue can be used.

This column type is not displayed and it gets its value from the recordset column

with the name set in the VVaalluuee property.

Link

Presents a link to the URL contained in the column referenced by the VVaalluuee property.

Formula

Presents the result of a formula that can refer to cells on the same row and the cells

in the summary and header groups that the row belongs to. A reference is typed as

[RowId_ColumnName] e.g. [d.1_amount]/[s1.1_amount]. The cells that the formula

Sida 38(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

refers to must have the CCoolluummnnNNaammee property set. Formulas can also use variable

values by using :[variable name] and recordset row values by using :[recordset

column].

Image

Presents an image with the url of the IIMMAAGGEE set in the VVaalluuee property.

Indicator

Presents an indicator with the CCoonnttrroollIIdd of the IINNDDIICCAATTOORR set in the VVaalluuee property.

DocumentSource

Presents a link to the first Agresso document matched by the DDOOCCUUMMEENNTTSSOOUURRCCEE set in

DDooccSSoouurrcceeIIdd property of the column. Or if the DDooccSSeelleeccttoorr property is set, populates

the matching DDooccSSeelleeccttoorr with all matching documents.

FormulaSummary

This column type can only be used in a summary row. It presents the summary of a

formula column (column containing formula values). The VVaalluuee property is set to the

CCoolluummnnNNaammee of the formula column to present the summary for. The formula

column that the summary column references must have the CCoolluummnnNNaammee property

set.

Fill

Presents an indicator that is filled by a percentage equal to the value of the vvaalluuee

property.

RowComment

Displays an edit icon that allows commenting on separate rows. Requires that the

module table is installed in a database. It also requires that a CCOOMMMMEENNTT object is

attached to the TTAABBLLEE control, and that there is a column in the recordset containing

unique values called “recid”. A CCOOMMMMEENNTT object is a built in WebInfo object that lets

users add or view comments for a control, table row or table cell.

HeaderCheckBox

Allows multi checking of a column of type Edit containing checkboxes. This column

type can only be used on a header row.

Row Definitions

Row definitions enable WebInfo to break down a table into groups on different levels and

present summaries for each group. If the table has been converted from an ad hoc table into

a standard table, the row definitions for a TTAABBLLEE can be accessed by right clicking on the

TTAABBLLEE and select Table->Edit rows…

A row definition contains properties that affect the appearance of the rows that belongs to

the row definition, collapsibility of the group and a property named BBrreeaakkCCoolluummnn. The

BBrreeaakkCCoolluummnn contains the name of a column in the recordset. When that column changes

value, new header and summary rows for the group are added to the TTAABBLLEE.

In the image below, a table breaks on project number. Each project has its own summary

row. The first header, h0, contains the labels. The second header, h1, displays the value of

the project number. The detail rows contain all the numbers. The outermost summary row,

s0, shows the total for all rows. The inner summary rows, s1, contain the summary for each

project. Thus h0, matches s0 and contains all rows while h1 matches s1 and is reproduced

once for each new project value.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 39(108)

Documentation

Agresso WebInfo 3.9

Create template table to reduce maintenance

In a WebInfo solution there often many tables that presents the same columns. To make the

process of creating those pages more streamlined and to reduce the maintenance, it is

possible for a table to point at another TTAABBLLEE, which will work as a template for column-

and/or row definitions. The idea is then to reuse a set of column definitions and/or row

definitions in different tables. If the current table has its own column definitions, WebInfo

will present the sum of all columns definitions.

The property CCoolluummnnssTTaabblleeIIdd in a table indicates which table that will function as a

template for column definitions and RRoowwssTTaabblleeIIdd does the same for row definitions.

Header table

Tables are in most cases row based with columns in the data recordset corresponding to

columns in a TTAABBLLEE. Sometimes when there are only a few rows or just one row in the

recordset but many columns it would be more practical to arrange each column on a separate

row. A typical WebInfo result follow up for example often has a page that shows invoice

information. The result from the SQL statement only consists of one row, but many

columns. To get a better overview the information can be spread on different rows. In this

situation it can be useful to make a so called header table.

In the image below a header table has been created to show details for a certain project on

more than one row. A header table is created by setting the AAddHHooccTTyyppee for an ad hoc table

to HeaderTable.

Filter content with input controls

WebInfo gives the user the opportunity to use values of input controls and variables in the

SQL statement to control what is collected. To include a variable’s value in a SQL statement

just add it to the query prefixed by :@, e.g. “SELECT * FROM EMP WHERE companyid =

:@companyid”. To use the value of a control in your query, e.g. a dropdown, you can do same

but suffix the controls id with “_value” as well. Example: “SELECT * FROM EMP WHERE empno = :@empselector_value”

Zoom

Zooming in WebInfo is the act of selecting an option on one page, moving to another page,

and adapting the contents on that page based on all the selections that have been made on

previous pages.

Sida 40(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

E.g.

- On page 1, the user is shown a selection of countries in a table. By clicking on one of the

countries in the table the user is brought to page 2.

- On page 2, a list of counties is displayed. In a special variable called the drillvalue,

WebInfo has saved which country the user selected on page 1. This allows the page to

display a table with all the counties in the selected country. The user can then select a county

which causes a zoom to page 3, in which both the selected country and the selected county

are available in the drillvalues.

The TTAABBLLEE supports a number of different ways to zoom to another PageId. The following

zoom possibilities are available:

Zoom directly when clicking on a cell or a button by using the CCOOLLUUMMNN properties:

o ZZoooommDDrriillllVVaalluueess

Comma separated list of columns in the recordset that will be passed to the

next page as variables when a zoom button or link is clicked. The drill value

names are formatted as [PageId]_drillvalue_[drillvalue column number] e.g

10_drillvalue_1.

o ZZoooommDDrriillllTTeexxtt

Comma separated list of columns in the recordset that will be passed to the

next page as texts when a zoom button or link is clicked. The drill text names

are formatted as [PageId]_drilltext_[drilltext column number] e.g

10_drilltext_1.

o ZZoooommUUrrll

The URL which the user will be linked to when clicking on the button or

link. This link can be relative i.e. inside WebInfo or an external link to

another web site or a PageId or a javascript method if it starts with

"javascript:".

o ZZoooommTTaarrggeett

Target window or frame for the zoom. The target can refer to a WebInfo

frame if it is prefixed with WB_ e.g WB_MAIN.

Zoom using a dropdown of different zoom buttons by setting the CCOOLLUUMMNN or RROOWW

property TTaabblleeZZoooommCCoonnttrroollIIdd to the CCoonnttrroollIIdd of a TTAABBLLEEZZOOOOMMCCOONNTTRROOLL to be used.

A TTAABBLLEEZZOOOOMMCCOONNTTRROOLL is a theoretical grouping of TTAABBLLEEZZOOOOMMLLIINNKKSS sharing the same

TTAABBLLEEZZOOOOMMCCOONNTTRROOLLIIDD. Each TTAABBLLEEZZOOOOMMLLIINNKK describes the destination, description

and behaviour of one zoomlink This type of zooming is only supported by the SQL

column type.

Zoom using a frame that is inserted into the table underneath the clicked cell or row.

The CCOOLLUUMMNN property EExxppaannddZZoooommCCoonnttrroollIIdd is set to the CCoonnttrroollIIdd of the frame that

should display the zoom information. To pass drill value to the EEXXPPAANNDDZZOOOOMMCCOONNTTRROOLL

the properties ZZoooommDDrriillllVVaalluueess and ZZoooommDDrriillllTTeexxtt are used in the same way as a

normal zoom. This property is supported by the SQL and button column types.

Zoom values are tightly integrated with the user’s navigation path in WebInfo. Drill

values that belong to a page that is no longer present in the user’s navigation path will be

cleared by WebInfo.

To display drill values a FFIILLTTEERRIINNFFOO control can be used which displays drill values, drill

texts and input control values from a number of pages in the user’s navigation path.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 41(108)

Documentation

Agresso WebInfo 3.9

Export Report

WebInfo can export TTAABBLLEE((SS)) and FFIILLTTEERRIINNFFOO((SS)) to storable reports in files. WebInfo exports

by default to the Excel 2007 zipped XML format with the filename

WebInfoExcelExport.xlsx. This behaviour can be altered using Page properties. WebInfo

can also export to the HTML, XML and PDF formats. Exports to these formats are not as

feature rich and will render differently.

To generate an export, a user can just right click on a table and choose export (unless the

option has been disabled). It is also possible to create a BBUUTTTTOONN that calls the JavaScript

function WebInfo.ExportReport. The first parameter of this function is a semicolon

separated list of CCoonnttrroollIIddss of the tables that are supposed to be exported to the report. The

second parameter can contain a semicolon separated list of CCoonnttrroollIIddss of FFIILLTTEERRIINNFFOO to

export. The first TTAABBLLEE is matched against the first FFIILLTTEERRIINNFFOO etc and each one is placed on a

separate tab in Excel.

Here are some examples of what a SSuubbmmiittUUrrll may look like:

javascript: WebInfo.ExportReport('z10_table');

javascript: WebInfo.ExportReport('z10_table;z10_tab2');

javascript: WebInfo.ExportReport('z10_table', 'z10_fi');

javascript: WebInfo.ExportReport('z10_table;z10_tab2', 'z10_fi;z10_fi');

Sorting a table

There are two different ways to sort a TTAABBLLEE: client side and server side. The sort type is set

in the property SSoorrttTTyyppee in the edit form of the TTAABBLLEE.

Client side sorting does not require any extra setup and is done with help of JavaScript that

sorts the TTAABBLLEE without reloading the control via AJAX. This makes this sort type easy to

use and sorting is performed quickly for normally sized TTAABBLLEESS. Client side sorting cannot be

used for more complex TTAABBLLEESS that have header and/or summary groupings. Client side

sorting can only sort on one column at a time.

Server side sorting sorts the table via AJAX according to the sort columns set for the

selected column in the SSoorrttCCoolluummnnss property. This is only relevant for header columns. The

sort columns are set in the variable orderby that can be used in the SQL statement for the

TTAABBLLEE,, e.g. “SELECT * FROM table ORDER BY :orderby”. Server side sorting is very

flexible but takes a little bit longer to perform the sorting than the client side sorting. Server

side sorting builds up a sort string from the clicked columns. The sort string does not only

contain the last clicked column but all clicked columns in reverse click order. Sort direction

can be changed on a column by clicking on it once more, and clicking on a column a third

time will result in sorting being turned off for that column.

Table Paging Modes

Tables may contain many hundreds of rows of data which may not be optimal to display all

at the same page due to browser limitations, ease of reading or design reasons. By using

table paging the table data can be split up over table pages of a given length.

Table paging can be used in two modes: normal or extensive. Normal mode minimizes the

amount of data handled for the request and will therefore be faster and require less server

resources for large tables. The drawback is that summary rows will only summarize over the

displayed data.

Sida 42(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Extensive mode will iterate over the whole data set and calculate correct summary lines but

is therefore not optimal for very large data sets.

Table with input fields

A TTAABBLLEE can be designed with input fields for entering data. The data can be saved using

insert, update and delete SQL statements or built in SQL statements used for storing Agresso

budget and forecasting data (described further in the following chapter). The SSaavveeTTyyppee

property of the table defines which save technique should be used. The following SSaavveeTTyyppeess

are available:

CallBack

Saves the data using the update, insert and delete SQL statements of the table. The

data is saved using AJAX which means that the page is not reloaded during the save.

PostBack (Obsolete save type, should not be used post WebInfo 3.7)

AgressoAbwData

Saves budget/forecast data using AJAX to the Agresso abwdata table.

AgressoAglBudDetail

Saves budget/forecast data using AJAX to the Agresso aglbuddetail table.

Forecast

Saves budget/forecast data using AJAX to Agresso.

To allow input for a column in the table the column definition’s CCoolluummnnTTyyppee must be

changed to “Edit”. The column will then be displayed as a simple textbox. To further control

the properties of the input field a TTEEXXTTBBOOXX,, TTEEXXTTAARREEAA,, DDRROOPPDDOOWWNN or CCHHEECCKKBBOOXX on another

page can be used as template for the input column. This is done by setting the EEddiittCCoonnttrroollIIdd

property of the column definition to the CCoonnttrroollIIdd of the template control. The input column

will inherit all properties of the template control including PPIICCKKEERR, OONNCCHHAANNGGEE and VVAALLIIDDAATTOORR

objects attached to the template control. An OONNCCHHAANNGGEE object can set the value of another

column by setting the VVaalluueeCCoonnttrrooll property of the OONNCCHHAANNGGEE object to the CCoolluummnnNNaammee of

the other column.

All input columns in the table should have its CCoolluummnnNNaammee property set. The column name

is used when referring to the value of the column in the update, insert and delete SQL

statements. The update, insert and delete SQL statements can in excess of normal WebInfo

variables and titles contain recordset values (:@[recordset column]) and input column values

(:@[column name]).

All changes made to the table are saved temporarily and is saved back to the database using

the update, insert and delete SQL statements. Save is invoked by either calling the

JavaScript function WebInfo.SaveTable (See the reference for further details about the

parameters) or by using the SSAAVVEEBBUUTTTTOONN. One update, insert or delete SQL is executed for

each updated row. If all rows should be updated the special recordset column “updated” can

be used (see reference for further information).

New rows can be added to the table when the table has an insert SQL statement. The new

rows are added by calling the JavaScript function WebInfo.AddNewRow (See reference for

further details about the parameters). The insert template row is generated from the column

definitions of the detail rows (d.1 etc.). If the insert template row should have different

column definitions than those of the detail rows column definitions with row type “i” can be

created (e.g. i.1 instead of d.1).

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 43(108)

Documentation

Agresso WebInfo 3.9

Rows can be deleted in the table by selecting rows to be deleted and then calling the

JavaScript function WebInfo.DeleteSelectedRows. Rows are selected by checking the

checkbox at the beginning of each row. The select checkbox is only present if the table has a

delete SQL statement.

Agresso forecast and periodical distribution

As described in the previous chapter the TTAABBLLEE can be used for inputting forecast data using

the AgressoAbwData, AgressoAglBudDetail and Forecast save types. When one of these

save types is used there is no need to add an update, insert or delete SQL statement to the

Table. The SQL statement is predefined for both MS SQL Server and Oracle and stored in

the Setupsql view. Apart from setting up the save type, additional information is added for

each forecast column definition. The column definition properties related to the forecast

saving is located in the forecast section (See reference for more detailed description of each

property). WebInfo saves forecast data differently from normal table saving by executing

one update SQL statement for each forecast column and not for each row.

The forecast input can be distributed over a period of time (Agresso periods). This is setup

by setting the FFoorreeccaassttIInnppuutt property to ForecastWithDistribution and adding additional

information to the column definition properties located in the distribute section (See

reference for more detailed description of each property). WebInfo executes one update SQL

statement for each period that the forecast data is distributed over. WebInfo has three built in

distribute types 1=linear, 2=manual and 3=controlled by the value of a DDRROOPPDDOOWWNN setup in

the column definition property DDiissttTTyyppeeSSeelleeccttIIdd. Extra distribute types can be setup using

the TTAABBLLEE property DDiissttTTyyppeeSSqqllIIdd or by setting the value in the DistTypeSelectId DDRROOPPDDOOWWNN

to a list of decimal values (with dot as decimal separator) separated by the “|” character and

adding up to 1.

Collapse/Expand rows

The TTAABBLLEE control supports collapsing and expanding rows belonging to a group of rows. To

enable collapse/expand the row definition property CCoollllaappssiibbllee of a header row should be set

to Collapsed, Expanded or CollapsedShowingFirstDetailRow. The CCoollllaappssiibbllee property

cannot be set on rows starting with h0 and it must be the first header row for the group e.g.

h10.1 and not h10.2.

The TTAABBLLEE can collapse/expand rows using two different techniques set in the property

CCoollllaappsseeEExxppaannddRRoowwssTTyyppee, which can be set to:

Clientside

All table rows are loaded when the page is loaded and the collapse/expand is

performed only in the client browser. This type can be slow for large tables.

Serverside

The TTAABBLLEE only loads the currently visible rows and when a collapsed group of rows

is expanded the rows are loaded from the server using AJAX. The recordset column

recid containing unique values for each detail row must be present in the select SQL

recordset for this property to work. The details rows within a collapse expand group

must always sort in the same recid order.

The TTAABBLLEE can remember the collapse/expand state of each row within a user session if the

property RReemmeemmbbeerrCCoollllaappsseeEExxppaannddRRoowwss is set to true and the same recordset column recid

described above is present in the select SQL recordset.

Sida 44(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Mimicking The Ad Hoc Table Style

When you create a table in WebInfo in Ad-Hoc mode, it will by default add styles for your

rows that clearly separates your groups and rows visually. These styles work together in an

intricate pattern to accomplish this by changing look depending on whether the row is in edit

mode, if it is even/odd and many more parameters. When you choose to generate your

row/column definitions from the Ad-Hoc table, these styles will be added to your generated

rows.

There are times however, when you might want to set these styles yourself, for example

when you have upgraded from a version of WebInfo that didn’t support theming, and you

don’t want to go back into Ad-Hoc mode to have the classes generated for you. Then this

section will try to explain how to set your row styles in the same manner that WebInfo does.

Each row style should consist of several classes that are combined together.

Firstly the row style should explain what type of row it is. One of the following classes

should be added:

row_header (Use if the row is a header row)

row_detail (Use if the row is a detail row)

row_summary (Use if the row is a summary row)

Then if your row is either the topmost or bottommost row (e.g. h0 or s0) you should indicate

this by adding one of the following classes.

top

bottom

Then if your row is either the topmost row, the bottommost row (e.g. h0 or s0) or a detail

row, and you have created breakrows, you should add the following class.

grouped

Then if your row is a detail row, you should copy the style into to the alt style class and add

the following class.

alt

Then if your row is a break column you should add a group class to its classes, that tells the

system which break group the row belongs to. There are 4 groups available and you should

use the groups that have the lowest numbers first. E.g. if you have 3 break groups, you

should use group0, group1 and group2. Higher group numbers should be used for lower row

definition numbers to give the feeling of more encompassive vs less encompassive groups in

the layout. E.g. if you have break columns h.10 and h.20, you should use group0 and

group1, but you should assign group1 to h.10 and group0 to h.20.

group0

group1

group2

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 45(108)

Documentation

Agresso WebInfo 3.9

group3

Finally, for each break column header and break column footer, you should add another row

definition, but below the source e.g. if source row is h10.1 this would become h10.2. This

row should have the same classes as the source row, but with one class added.

spacer

Example Table row definitions

Sida 46(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Sparklines

Sparklines

SSPPAARRKKLLIINNEESS are small charts that can be placed in a line of text, a corner or a table. Each

sparkline object can display two charts concurrently where the second chart is overlayed on

the first one. These charts can take on different appearances, i.e. a bar chart with an

overlayed line chart. In addition, a normal zone can be defined. This zone is bounded by an

upper and a lower value. The zone is colored to show for example, an accepted or expected

interval.

Each chart type has its custom settings for colors and behavior, but these have been reduced

to a minimum to make sparkline setup fast and simple. For more complex charts with

legends and more, the ChartFx object should be used. Sparklines cannot be exported to excel

or PDF, they exist solely in the context of the web browser.

The most important property is SqlId. It is responsible for feeding the sparklines with data,

labels and x values. To control the behavior of the sparklines, the following reserved column

names can be used:

recid - Associatea a sparkline to a specific table row. More information below.

series1_value – The y value column of the first serie.

series1_name – The label of the first serie. The value of the first row will be used.

series1_suffix – Suffix appended to each value in tooltip, i.e. kr, euro.

Only the value of the first row will be used.

series2_value – The y value column of the second serie.

series2_name – The label of the second serie. The value of the first row will be used.

Series2_suffix – Suffix appended to each value in tooltip, i.e. kr, euro.

Only the value of the first row will be used.

x - The x value to be used for each corresponding serie value.

If x values are not provided, integers starting from 1 will be used.

xlabel - The text to be shown in tooltip for each corresponding x value.

If xlabel is not provided, x will be used for tooltips.

Drilling into Sparklines

In addition to above columns, the columns drillvalue[serie] and drilltext[serie] can be used.

The values of these columns will be included when drilling by clicking on the chart.

Drillbehaviour is only enabled when the property DrillPage is set.

Using Sparklines in Tables

To associate a sparkline to a table, both the table dataset and the sparkline dataset needs to

have a recid column, associating them with eachother by recid value. A column of type

sparkline must then be created with EditControlId pointing to an existing sparkline template

object. The data generated by the sparklines sql must in turn generate multiple sets of data

where each set is separated by its recid.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 47(108)

Documentation

Agresso WebInfo 3.9

Sparkline Properties

All colors are given in the form RRGGBB where each group takes a hexadecimal value

between 00 an ff, i.e ff90b1

LineColor, SpotColor, FillColor – If two line charts are used in the same sparkline object,

two color codes can be given separated by a comma. I.e. ff90b1,40ffa0

StackedBarColors – This property takes a series of color codes separated by commas. There

are four default colors set by default. This property is only used when MultiSeries is

checked.

MultiSeries – This property disables the functionality to overlay two charts, but allows even

more series to be specified (value, name suffix). These series will be stacked on top of

eachother in a bar chart. When MultiSeries is checked, negative values will be stacked like

positive values as and NegBarColor will not be used.

Sida 48(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

PivotGrid

PivotGrid

The PPIIVVOOTTGGRRIIDD object is a control that displays a data viewing tool that can be used to pivot

and analyze data. The recordset of a SQL is the source of the data collection to be pivoted.

For more information on usage – see eguide.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 49(108)

Documentation

Agresso WebInfo 3.9

Graphical controls

ChartFX and GaugeFX

WebInfo has built-in support for the third part products ChartFX and GaugeFX from

SoftwareFX. These products are automatically installed on the web server by WebInfo. The

different type of charts and gauges can be seen on this site http://eu.softwarefx.com/sfxGallery/

Examples:

Picture 9: Gauges

Different charts and gauges can be combined to display more complex information.

The CCHHAARRTTFFXX object cannot be AJAX loaded when using its toolbar. The property

NNooLLaatteeLLooaadd has to be used on WWEEBBIINNFFOOFFRRAAMMEESSEETT and TTAABBSSTTRRIIPP for such charts.

CCHHAARRTTFFXX and GGAAUUGGEEFFXX properties are specified in a XML based definition. The schema for

the XML can be found in the directory “[WebInfo INSTALL DIRECTORY]\Schemas”. Use

an XML editor to produce the CCHHAARRTTFFXX and GGAAUUGGEEFFXX definition, e.g. Visual Studio or a

third part tool such as http://xml-copy-editor.sourceforge.net/; or the XML design helper available

in the help menu.

An SQL statement can be used to populate the chart. The column names from the recordset

can be referred to in the XML using the standard : colon prefix.

The XML definition is parsed at runtime and WebInfo variables are replaced in the same

way as with WebInfo SQL queries. This means that almost everything in the charts and

gauges can be handled dynamically.

The charts and gauges can be shown in image- or .NET mode. To use the .NET mode,

permissions need to be assigned on the client side. See this article

http://support.softwarefx.com/kb/614/1/001.htm. We recommend the image mode for easy

setup.

See the document “Charts and Gauges” document for more details on how to design these

objects.

Sida 50(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Picture 10: Pie Chart

Indicators

IINNDDIICCAATTOORRSS can be used to show key values or trends as a graphic symbol instead of just a

numeric value. An indicator has a number of TTHHRREESSHHOOLLDD objects that keep information about

the threshold value and the image and text that corresponds to it. Indicators can be used as

regular controls on a page or used within a TTAABBLLEE. If used as a self contained control it uses

the SSqqllIIdd property to get its value. If not, it is taken from formula CCooddee if specified,

otherwise it takes it from the recordset column matching the vvaalluuee property of the CCOOLLUUMMNN

definition.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 51(108)

Documentation

Agresso WebInfo 3.9

Execute objects This chapter will explain some details regarding specific types of objects that let you

execute code on the server.

ExecuteSql

An EEXXEECCUUTTEESSQQLL is a object that allows you to execute a SQL statement on the server. The

most common usages of this feature are to set WebInfo variables based on data in a

database, and make database updates. E.g. you could set a variable to a users hometown

based on a query, knowing its social security number.

ExecuteScript

An EEXXEECCUUTTEESSCCRRIIPPTT is a object that allows you to execute a code block on the server. This is a

good way to protect some of your custom logic that you don’t want to show in clear text on

the client side. It is also good because it gives you access to some server features that you

would not have on client side, e.g. file operations.

Bounce

A Bounce is an object that lets you interrupt the loading of the page and redirect you to a

new page. This is good when you have some logic you only want to run once. You could run

that logic on a page and then redirect to another page, ensuring that the logic is not repeated

if the user refreshes the page. Having the bounces active in edit mode can be a nuisance

since it makes it hard to edit the pages that have bounces attached. Therefor it is possible to

toggle bounces on and off in edit mode using CTRL + B.

Execute Position

To ensure that WebInfo runs your execute statements at the appropriate time during the page

load, a property called EExxeeccuutteePPoossiittiioonn is provided. This property can be set to one of the

following values.

BeforeAuthentication: WebInfo has not authenticated the user yet and most variables (form

input controls, ajax variables) will not be available.

AfterLoadingVariables: WebInfo has populated all the variables except ajax control

variables. The engine has not yet created any controls however. This is probably the most

common execute position.

BeforeLoadingControls: A little later than AfterLoadingVariables, among other things

SaveTables has been called, so this is the execute position to use if you want to retrieve

values from a saved table before controls have been loaded.

AfterLoadingControls: Any changes in variables here will not be noticed in the controls

until next loading of the page. This could be a good place to clear a save message that you

display on the screen. It will be shown during this load, but not the coming.

BeforePopulateTreeNode: This is run before a tree is expanded using AJAX.

Sida 52(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

RenderComplete: This is run just before WebInfo renders the page. WebInfo will not alter

the page anymore after this stage. This is the last chance to run any code before page is

rendered.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 53(108)

Documentation

Agresso WebInfo 3.9

Attached objects These are controls that attach to other controls and act as properties or extensions to the

parent control, adding extra functionality and features. The subcategories these controls sort

into include the input VVAALLIIDDAATTOORR controls, the OONNCCHHAANNGGEE controls, the value PPIICCKKEERR controls,

the PPAARRKK property and the CCOOMMMMEENNTT object. These can all be accessed and added to a control

using the context menu.

Input Validation Controls

These controls can only be added to input controls. They allow for data validation, both

client and server side. See validation chapter in the Input section for more information.

OnChange Controls

OONNCCHHAANNGGEE controls allows you to act on changes made to input controls or more precisely -

the onchange event fires as you leave an input control after changing its value. These events

can be set to trigger server side scripts, client scripts or SQL queries.

Value Picker Controls

Picker controls present a selection of choices based on the type of picker used. In some cases

the options are filtered based on a search text typed by the user. See the Pickers chapter in

the Input section for more information.

Park Object

The Park object allows you to park a WebInfo control so that it does not display. The control

is still kept in the configuration however, which means that you can restore the control to a

visible state when you need.

Comment Object

The comment object is an object you can attach to any WebInfo control which then gets a

new option in its context menu to comment the object. Comments can be made personal,

group based, grouped on any value you like or generally visible to all using the RReellaattiioonn

property of the CCOOMMMMEENNTT object. All comments in a group will be visible when adding a new

comment, presenting the contributor with a comment history much like a forum thread. To

store comments to a comment object the WebInfo Module table need to be installed in your

database.

Combining the CCOOMMMMEENNTT object with the TTAABBLLEE control allows you to comment individual

cells or whole rows, marking up cells or rows as they get commented.

In order for the comment object to work in conjunction with a table control the recordset

returned by the SQL query must contain the “recid” column with uniquely identifiable ids

that separate each unique row. Since the recid must be unique for each row, concatenating a

number of column values usually works well, maybe together with the users id and other

SQL parameters such as report period etc.

The standard way to comment a table is the most specific, that is per cell comments, but row

comments can be switched on by creating a special comment column in the column

Sida 54(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

configuration edit grid. In both cases a recid column needs to be created or the comments

will simply attach to the table as a whole.

A use for this could be to comment financial reports and values that need further attention

by members of the team.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 55(108)

Documentation

Agresso WebInfo 3.9

Input WebInfo has several powerful features for creating input data solutions and advanced web

applications and not only reporting solutions. But handling data input forces the solution

developer to work slightly different.

Execute and Bounce Pattern

The most common way to update a database in WebInfo is by using the “Execute and

Bounce” pattern. You first create the input controls you need for the data you want to add to

the database, e.g. a few textboxes.

Then you create a submit button that takes you to another “save-page”. On the save page

you add an EEXXEECCUUTTEESSQQLL object that updates the database according to the values of the

controls. Finally you add a bounce object that takes you back to your solution again.

Note: Use Ctrl+B to disable bounces while editing.

Initial value for input control

All input controls have a property IInniittVVaalluuee that sets the initial value for the control when

first loaded. The RReesseettAAllllIInnppuuttCCoonnttrroollss and RReesseettIInnppuuttCCoonnttrroollssOOnnPPaaggee page properties can

be used to reset controls. It is also possible to use server side scripting to reset input controls.

See scripting reference for more information. Resetting input controls will force them to

reinitialize. The IInniittVVaalluuee property can be a fixed value, variable (prefixed with :) or title

(prefixed with $). A SQL statement can be used to set the initial value by setting the IInniittSSqqll

to the appropriate query.

Pickers

To assist the user in choosing an appropriate value to input, WebInfo provides an array of

pickers such as DDAATTEEPPIICCKKEERR, PPRROOMMPPTTPPIICCKKEERR, SSUUGGGGEESSTTPPIICCKKEERR and CCOOMMBBIINNAATTIIOONNPPIICCKKEERR. The

DDAATTEEPPIICCKKEERR allows the user to pick a date and returns the value in the date format of the

language settings of the users. The other pickers give the developer a chance to specify a

range of allowed values for the input control by making a SQL statement. When the user

fills in the value, WebInfo will provide the user with appropriate choices based on the users

input. The PPRROOMMPPTTPPIICCKKEERR allows the user to search for valid values, while the SSUUGGGGEESSTTPPIICCKKEERR

filters the values to the user’s input, only leaving results that match what the user has typed.

The CCOOMMBBIINNAATTIIOONNPPIICCKKEERR offers the functionality of both the PPRROOMMPPTTPPIICCKKEERR and

SSUUGGGGEESSTTPPIICCKKEERR at the same time.

Sida 56(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Validation of controls

It is often necessary to make some kind of validation of the data before saving it. It can for

example concern the length of a field or formatting of a date field. E.g. a SQL may generate

an error if a project number longer than 25 characters is entered.

It is also common to want to check if certain fields are filled in and/or if they are valid

according to some rules. In a project page it might be preferred that only customers that

already exist in Agresso can be filled in.

To solve such demands on validation WebInfo uses a VVAALLIIDDAATTOORR. There are several different

types:

- Sql

- Regular Expression

- Script

- ClientScript

- DateTime

- Integer

- Decimal

All validators except for the CCLLIIEENNTTSSCCRRIIPPTTVVAALLIIDDAATTOORR are triggered both on the client side for

a better user experience and on the server side to prevent malicious users from modifying

the data before it is sent back to the server.

To group a number of validators together, a VVAALLIIDDAATTOORRGGRROOUUPP can be used. The

VVAALLIIDDAATTOORRGGRROOUUPP contains properties that describe how the validators within that group

should be validated. For example, a VVAALLIIDDAATTOORRGGRROOUUPP can have a property that demands that

at least one of the validators within the group have a value. All VVAALLIIDDAATTOORRs and

VVAALLIIDDAATTOORRGGRROOUUPPs belong to a VVAALLIIDDAATTIIOONN object. If no VVAALLIIDDAATTIIOONN object name is specified it

will belong to the empty VVAALLIIDDAATTIIOONN object. A VVAALLIIDDAATTIIOONN object can be triggered when a

save-button is pressed and has a special message that is displayed if the validation failed. A

VVAALLIIDDAATTOORR is either triggered by its VVAALLIIDDAATTIIOONN object or when the field that the VVAALLIIDDAATTOORR

validates is changed.

If you want a comprehensible message to be shown when a validation fails you can set a

TTIITTLLEE for the VVAALLIIDDAATTOORR or VVAALLIIDDAATTIIOONN object. This will be shown in red to the right of the

control that failed the validation or as a balloon tooltip if the validation was triggered by an

input field changing value.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 57(108)

Documentation

Agresso WebInfo 3.9

Dirty mark page

Input controls now have the property DirtyMarksPage that decides if a change of this

controls value should mark the page as dirty. A dirty page will present the DirtyWarning

text, a page property, if the user leaves the page without saving the frame that the control

belongs to.

Save Button

The Save Button control looks like a normal button but is customized to help us with saving

the input from several controls. The default behavior when the SaveFrameName property is

left blank is to save data from all the controls that are located in the same frame as the

button. By typing in an alternate frame’s ID, that frame’s controls will be saved instead.

When saving, it will do a number of things: it will call all the save SQLs of any tables

contained in the frame to be saved, triggering their validators if any; it will call its own

custom validaton if one is specified in the ValidationId property and if it passes it will call

its SaveSql or SaveCode if specified. If the SaveSql or SaveCode, depending on use,

returned without error, it will present the save successful message, otherwise the save failed

message.

Any input controls whos validators should be checked must belong to the validation

specified in the save button control. It is also possible to altenativly redirect to other pages or

run scripts when a save succeded or failed.

Sida 58(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Datawarehouse Besides using queries to populate controls, WebInfo also offers the option to display results

from a filtered WebInfo datawarehouse.

A WebInfo datawarehouse is a collection of data that can be filtered by attached filter

controls(Listbox, Dropdown). The filtered data is then used to populate value controls

(Table, Gauge, Chart). The benefit of using a datawarehouse for filtering is that performance

enhancing indexes are created automatically and that they are really quick to setup.

Populates

Populating a datawarehouse

A datawarehouse is populated by one sql statement. This means that if you want to use data

from several different tables you should join in all tables that are necessary in this one query.

Some of these columns should be used for filtering the data. To allow the filter controls to

display one value while filtering on the other, it is possible to add a column with the suffix

_text to the recordset for each filter column, and this will instead be shown in the filter

controls.

E.g. You want to filter on employees... While you might want to display the name in a filter

control, you really want to filter based on employment id. Then your warehouse query might

look like this:

SELECT empno AS emp, empname AS emp_text, ...

Also, a datawarehouse has several properties that tells you when to repopulate its contents

from the original datasource. It can be based on intervals, or the result of a sql statement.

The actual content of the indexed datawarehouse will be stored in a database of your choice.

You can set a prefix for the names of the tables created by the datawarehouse.

Filtering a datawarehouse

Since the datawarehouse wants to be able to index its data properly, it is mandatory to define

which columns that can be used in filters. These are specified in the filtercolumns property

Datasource Datawarehouse

Warehouse is filtered

by connected listboxes

and dropdowns.

Filtered data is

displayed by Tables,

Charts, Gauges.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 59(108)

Documentation

Agresso WebInfo 3.9

of the datawarehouse. Make sure to mark columns as filtercolumns sparingly as the

population time and storage size increase with more indexes.

The next step is to add a filtercontrol. WebInfo supports ListBoxes and DropDowns

currently. All that is required is that you choose which datawarehouse to apply filter to and

which filtercolumn to map the filtercontrol to and you are set to go.

Displaying results from a filtered datawarehouse

To display the results of a filtered warehouse, one needs to add a datawarehouse value

control. WebInfo currently supports Tables, Charts and Gauges for this purpose. Then you

choose which datawarehouse to map the value control to and create a query against the

datawarehouse. Each value control has its own custom editor that is used to define queries

towards the datawarehouse.

If one of the datawarehouse columns should be summarized over groups, it must be marked

as a value column in the datawarehouse.

If one wants to write a custom query against the datawarehouse, but still wants to be able to

use the current filter in the query, it is possible to do so using a wsql-command. For more

information on syntax, use the help in the sql-editor. One must still connect the control to a

datawarehouse however, or the filter sql will not be available.

Using an In-Memory service to drive datawarehouse

If the warehouse has a large quantity of data, sometimes the performance of running the

queries towards a database might not be enough. For those cases it is possible to set up a

WCF service that filters the data in memory and builds up grouped resultsets for use by

WebInfo.

Once a warehouse service has been set up (see separate documentation), WebInfo needs to

connect itself to the service. This is done by adding an application setting in web.config that

has the value set to the url of the service endpoint similar to the example below.

<add key="MyServiceEndPoint" value="http://myserver:8090/WareHouse"/>

After the setting has been created, the datawarehouse must be linked to the serviceendpoint.

This is accomplished by setting the ServiceEndpoint property of the datawarehouse object to

the key of the created setting in web.config.

If a value control is using the queryid to specify the selection, the above is all the changes

that need to be made. However, if the valuecontrol is using a sql statement to get the values,

the property Groupings on the value control needs to be set to a comma-delimited list of

columns to group on. Also, instead of querying the table suffixed with _warehouse one must

alter the query to use the table suffixed with _result and filter on controlid and combined

sessionids instead of wsql_dwhwhere.

Example classic SQL: SELECT * FROM DWH_WAREHOUSE WHERE

WSQL_DWHWHERE(‘DWH’) AND …..

Example service SQL: SELECT * FROM DWH_RESULT WHERE

CONTROLID=’tblTable’ AND SESSIONID=:@iissessionid + :@sessionid AND …

Sida 60(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

For ease of use, we provide an overload of the WSQL_DWHWHERE function that allows

you to use the same sql both for service and non-service calls. This overload requires that

the controlid is appended as a second parameter.

Example generic SQL: SELECT * FROM DWH_WAREHOUSE WHERE

WSQL_DWHWHERE(‘DWH’, ‘tblTable’) AND …..

For more information

Use the property tooltips and watch the detailed online guide available from WebInfo help

menu.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 61(108)

Documentation

Agresso WebInfo 3.9

Page action

Key mapping

In WebInfo, a function can be activated without using the mouse by adding a key mapping

that activates the function. This requires some knowledge on how the function is called in

JavaScript. It is wise to avoid a key mapping that affect the operating system, the web

browser or WebInfo’s editing mode. WebInfo’s reserved shortcuts can be found in the

reference manual.

In edit mode, the web browsers status row is set to the current key combination pressed to

help describe how to type a key combination.

Help for key mapping.

Some examples of syntax that can be used as a key shortcut:

F12

Ctrl-7

Alt-M

Shift-Ctrl-M

Shift-Ctrl-Alt-O

Key mappings can be created in the edit menu under Action->Keymapping.

Sida 62(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

File handling Files uploaded in WebInfo are stored in database tables, and more specifically the module

table. This table is also used to store other optional data such as favourites. So before using

the file related controls we must make sure that the module table is created or make a

database administrator add it for us.

The table needed to store the files will be automatically created by the installation

application when installing WebInfo with the configuration collection in a database. To

build the table manually, find the SQL by going to Setup->Setupsql from the edit menu.

Find the row that matches your database and retrieve the row called CreateModuleTable.

Execute the matching SQL in your database.

If a module table has already been created for another module solution, say for favourites,

that table could be used instead.

Adding the FileUploader and FileViewer controls

In order to upload files we need to add a FFIILLEEUUPPLLOOAADDEERR control to our page. A FFIILLEEUUPPLLOOAADDEERR

control always requires a full post to submit the file, so the page should be kept lightweight

for faster reload. The FFIILLEEVVIIEEWWEERR control is a simple control to browse uploaded files, delete

them or view their content. Both controls require very little configuration to work but

attention should be paid to the “relationid” property of the two controls.

The relationid creates a conceptual link between several files, almost like a file folder. All

files uploaded with a certain fileuploader are tagged with its corresponding relationid. A

fileviewer in turn will only display files with tags matching its own relationid. Thus, a

fileviewer having the same relationid as a fileuploader will display the files uploaded by that

fileuploader.

The relationid is a string that allows some simple references to WebInfo variables. E.g.

setting it to “:role_id - :client” would let all user that have the same role and belong to the

same client to view the same files.

Maximum File Size

The maximum allowed size of uploaded files derives from parameters within the web.config

or machine.config file within the system.web configuration section. The following three

parameters on under httpRuntime affect the maximum file upload size.

<system.web>

<httpRuntime

executionTimeout="110"

maxRequestLength="4096"

requestLengthDiskThreshold="4096"

/>

</system.web>

“executionTimeout” is the maximum value in seconds that an upload may take.

“maxRequestLength” is the maximum size (in kb) of any uploaded file.

“requestLengthDiskThreshold” is the maximum buffer size (in kb) and should be the same

as the maxRequestLength in the case of WebInfo. Larger values allow for larger file

transfers but also allocate more memory in the web server. This could be a risk if the

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 63(108)

Documentation

Agresso WebInfo 3.9

solution faces a large user base, as each user can then potentially allocate the same large

amount of memory in the web server causing it to crash. The solution developer should

therefore take measures and set an appropriate maximum file size depending on what users

are using the application and what other systems reside on the web server.

The blob object

If you have a file saved as a blob in a database you can use WebInfos BBLLOOBB object to retrieve

it. To accomplish this all you have to do is create a BBLLOOBB object and write a sql statement that

retrieves the binary data from the database. You can then tell WebInfo to fetch this blob by

appending blob=blobid on the url.

This allows you to set all urls in WebInfo to retrieve a blob. E.g. if you want to retrieve an

image from the database to use in an IIMMAAGGEE object you can set the iimmaaggeeuurrll of the IIMMAAGGEE

object to blob=blobid.

Sida 64(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Agresso

Agresso roles

WebInfo supports granting permissions to a control or Page for one or several Agresso

roleids. Adding this type of security is as easy as creating a permission object and setting

AgressoRoleIds to the list of roles you want to be able to access the item.

You also have another option. It is possible to create a permission object and set the

permission to an agresso menu id. If you do that, you will get the same permissions as that

menu in Agresso.

To find a menu id in self service you just browse the page and you can read it on the URL.

To find a menu id in Smart Client you can visit the form you are interested in, and click

CTRL+SHIFT+H.

Above steps are only usable on forms. If you want to find the menu_id for a folder, it might

require you to make SQL queries against the Agresso database tables.

Show documents from Agresso Document Archive

WebInfo makes it easy to retrieve documents from the Agresso document archive. The core

of the idea is that you first create a document source, which points to a selection of

documents in the document archive. Then you connect that document source to the

component that is to display the documents. For the document archive integration to work

you will need to set the client variable, aaggrreessssoobbaasseeuurrll and aaggrreessssooccoonnnneeccttiioonniidd page

properties.

A document source is defined as follows:

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 65(108)

Documentation

Agresso WebInfo 3.9

The DDooccSSoouurrcceeIIdd is a unique identifier for this document source.

The DDooccTTyyppee is the type of document that this document source will display

The indexes are used to filter which documents to show. To see what each index

means to each document type, refer to Agresso setup.

There is also a component that is used to display a list of documents that is called the

DDOOCCUUMMEENNTTSSEELLEECCTTOORR which is defined as:

The DDooccSSoouurrcceeIIdd can point to a comma separated list of document sources. If it

does, the items displayed in the selector will be those that match the document

source filters.

The TTaarrggeettFFrraammee sets which frame to open the documents in.

The CCoolluummnnssTTaabblleeIIdd is optional. If it is set, it will allow you to render the

DDOOCCUUMMEENNTTSSEELLEECCTTOORR as a table using the definitions set by an external table. The

available result columns that can be used are: doc_guid, view_method, title, description, lat_rev_no, entry_status, user_id, last_update,

doc_system_id, doc_library, mime_type, max_pages, link

Currently it is possible to map document sources using the following manners:

Using column definition:

It is possible to connect a column definition to a comma separated list of document sources

using the DDooccSSoouurrcceeIIdd column property. When this is done, the indexes in the document

Sida 66(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

source can use all WebInfo variables and all the data source column results for the current

row in the filter.

If the DDooccSSeelleeccttoorr property is set on the column definition, clicking the document column

will populate the chosen DDOOCCUUMMEENNTTSSEELLEECCTTOORR object. Otherwise, clicking the document

column will open the first matching document in the frame selected in ZoomTarget.

Using DocumentSelector:

It is also possible to map a DDOOCCUUMMEENNTTSSEELLEECCTTOORR directly to a comma separated list of

document sources using the DDooccSSoouurrcceeIIdd property on the DDOOCCUUMMEENNTTSSEELLEECCTTOORR. If this

manner is used, only the WebInfo variables will be available for use in the filters.

Agresso Focused Controls

WebInfo has a number of specialized controls that alleviate your task when creating Agresso

centered solutions. This chapter focuses on these and shows you how to get up and running

with them quickly.

Observe that these controls only are available if you have made them visible by

selecting Show Agresso Objects under the Settings menu,

AgressoDropDown and AgressoTextBox

These controls are integrated versions of the DDRROOPPDDOOWWNN and TTEEXXTTBBOOXX control with integrated

internal SQL code and several default values that allow you to quickly create Agresso

focused solutions with minimal configuration. The AAGGRREESSSSOOTTEEXXTTBBOOXX also adds a PPIICCKKEERR

control targeting the agldimvalue table in Agresso. The DDRROOPPDDOOWWNN is also populated from

the agldimvalue table. Both controls require that a few Agresso specific variables are set.

These variables are listed in the table below:

Variable Description

Agressoconnectionid The connection id used to connect to the Agresso database.

Client The Agresso client used.

AgressoPeriod control

The AAGGRREESSSSOOPPEERRIIOODD control works a lot like the other Agresso controls but has more

properties to control features such as start- and stop period, though most can be left at the

default value. It displays a dropdown with periods defined in Agresso.

The only mandatory properties for the AAGGRREESSSSOOPPEERRIIOODD control are the PPeerriiooddIIdd and/or

AAttttrriibbuutteeIIdd. The PPeerriiooddIIdd lets you specify which sort of period you want to display, e.g. GL

for general ledger. The AAttttrriibbuutteeIIdd lets you pick any attribute you like to allow for

customized periods. The Attribute if set will override any value entered in the PPeerriiooddIIdd

property.

AgressoPeriodSlider control

The AAGGRREESSSSOOSSLLIIDDEERR control works in the same way as an AAGGRREESSSSOOPPEERRIIOODD control, but instead

of showing a dropdown, it shows a slider control. A slider shows a line with a span of values

and a cursor which you can drag along the line to the value you want to select. The slider

also allows you to select a span of values by showing two cursors – one pointing at the

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 67(108)

Documentation

Agresso WebInfo 3.9

minimum value of the span, and one pointing at the maximum value of the span. If a span is

used, values are available in the variables <controlid>_value_1 and <controlid>_value_2.

Sida 68(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Customizations There will inevitably be cases where the built-in functionality of WebInfo is not enough to

solve a particular problem. Sometimes a customer may need to integrate WebInfo with

another system or needs to export/import data in some other way than by using a database,

RSS or web service. There are also cases where there is a need to enhance the presentation

in the browser or add certain client side controls which are not part of WebInfo. In order to

solve these types of customizations WebInfo has the possibility to use SSCCRRIIPPTT objects and

SSIILLVVEERRLLIIGGHHTT.

A Silverlight object can be used as a way to create complex and graphically rich client side

controls. Silverlight is Microsoft’s response to Flash and allows for fast client side controls

that even can play media such as sound and video. It is possible to initialize the Silverlight

control with values from WebInfo using a SQL statement. It is also possible to update

WebInfo from the Silverlight control using HtmlPage.Window.Eval. For more information

regarding the latter, refer to Silverlight documentations.

While Silverlight take care of much of the complex user interface, the script object can take

care of advanced logic. A SSCCRRIIPPTT can be written in one of several different languages and can

be executed on either the server or the client. Server side scripts have the ability to access

parts of the WebInfo engine such as variables and the log file. For more information on the

available functions see the sections Managed JScript, VBScript and Lua.

When using server side SSCCRRIIPPTT objects it is important to use the SSoorrtt property correctly. If a

SSCCRRIIPPTT changes a variable which is then used by an SQL statement in a TTAABBLLEE control it needs

to have a lower SSoorrtt value than the TTAABBLLEE.

JavaScript

JavaScript is the recommended client script language for WebInfo. It is a browser

independent scripting language designed to look like Java but is easier for non-programmers

to work with. See section “JavaScript Helper Functions Reference” for available functions.

JavaScript can be used as a server side language but it is not recommended.

Managed JScript

This engine is available on both x86 and x64 platforms. It is however not supported by

Microsoft and has stability issues. Not recommended for production environments. To get a

list of available functions, look in the “Server Scripting Reference” in the reference

document. To active Managed JScript as the serverside javascript engine of choice, set the

web.config parameter WebInfoServerSideJavascriptEngine to “”.

Jint

Jint is the recommended server scripting engine. Jint has the same syntax as javascript and is

available on both x86 and x64 platforms. To active Jint as the serverside javascript engine of

choice, set the web.config parameter WebInfoServerSideJavascriptEngine to “Jint”.

VBScript

VBScript is a Microsoft scripting language. All features of the language are available in

WebInfo except user interface methods such as MsgBox. Server side VBScript and

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 69(108)

Documentation

Agresso WebInfo 3.9

JavaScript are only available on older x86 platforms. To get a list of available functions look

in the “Server Scripting Reference” in the reference document.

Lua

Lua has been deprecated as of version 3.7. While support might be reinstated in later

versions, it is currently not recommended for production use.

Sida 70(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Scripting a Configuration

The case for configuration scripting

Sometimes it might prove beneficial to have a solution generated automatically from a script

based on a set of parameters.

Examples:

You have a template solution that could be reused for different customers that only

needs a few customer specific changes. A configuration page could read the

customer specific settings and rewrite the configuration based on them.

You need to generate a new report every time, based on differing external inputs, i.e.

browser reports.

You often create similar components or pages and want to build your own toolbox to

generate them quickly.

WebInfo provides a set of serverside scripting functions to allow this. To use them one must

either be in edit mode or have the page property PermitEditScriptingInRuntime set to true.

Currently these functions are available for serverside config scripting.

Configuration scripting API (All functions reside in Config object)

- void CreateControl(string viewId, string pageId, Dictionary<string, object> properties)

- void UpdateControl(string controlId, Dictionary<string, string> updatedProperties)

- void DeleteControl(string controlId) - void DeleteControlsInFrame(string pageId, string frameName) - void DeleteDataWarehouse(string warehouseId)

- void CreateOnChange(string viewId, string pageId, string targetControlId, Dictionary<string, object> properties)

- void UpdateOnChange(string controlId, Dictionary<string, object> updatedProperties)

- void DeleteOnChange(string controlId) - void DeleteAllOnChangeOnTarget(string controlId) - void CreateAdHocConfig(string tableId) - void DeleteTableConfig(string tableId) - void CreateColumn(string tableId, string rowId, Dictionary<string, object>

properties) - void DeleteColumn(string tableId, string rowId, int sort)

- void UpdateColumn(string tableId, string rowId, int sort, Dictionary<string, object> updatedProperties)

- void CreateRow(string tableId, string rowId, Dictionary<string, object> properties)

- void DeleteRow(string tableId, string rowId)

- void UpdateRow(string tableId, string rowId, Dictionary<string, object> updatedProperties)

- void CreatePicker(string viewId, string pageId, string targetControlId, Dictionary<string, object> properties)

- void UpdatePicker(string controlId, Dictionary<string, object> updatedProperties)

- void DeletePicker(string controlId)

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 71(108)

Documentation

Agresso WebInfo 3.9

- void DeleteAllPickerOnTarget(string controlId) - void DeleteSql(uint sqlId) - uint CreateSql(string sql, string connectionId, bool cached, int

commandTimeout, string description, bool wsShared, bool onlyProtectedVariables)

- uint UpdateSql(uint sqlId, string sql, string connectionId, bool cached, int commandTimeout, string description, bool wsShared, bool onlyProtectedVariables)

- void DeleteCode(uint codeId) - uint CreateCode(string code) - uint UpdateCode(uint codeId, string code) - void DeleteXml(uint xmlId)

- uint CreateXml(string xml) - uint UpdateXml(uint xmlId, string xml) - void DeleteQuery(uint queryId) - uint CreateQuery(string query)

- uint UpdateQuery(uint queryId, string query) - void CreateObject(string viewId, Dictionary<string, object> properties) - void UpdateObject(string viewId, string idProperty, string id,

Dictionary<string, string> updatedProperties)

- void DeleteObject(string viewId, string idProperty, string id) - void SaveConfig()

Sample configuration scripting code

var props = new System.Collections.Generic.Dictionary{System.String, System.Object}();

props.Add("ControlId", "mybutton");

props.Add("FrameName", "myframeset");

props.Add("X", 100);

props.Add("Y", 100);

props.Add("SubmitUrl", "http://www.unit4.com");

Config.CreateControl("button", "autogen", props);

Config.SaveConfig();

Sida 72(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Change WebInfo ”Look and feel”

Customizing Initialization Titles

As a default behaviour, WebInfo will initialize displaying the text

“Please wait while the server is warming up.”. For most cases this will be an informative

text that tells the user that the WebInfo engine is starting up and that there might a delay

before the first page is shown.

There might be cases however when you might want to change this title to something more

appropriate for the current solution. Since WebInfo is not started at this time, this text cannot

be read from the configuration. To make it easy to distribute the customizations of these

titles, they are read from javascript functions, and thus can be overridden by a script from

the custom folder which is normally distributed as part of each solution.

To override the initialization titles, create a file called InitScript.js in the custom folder and

create the following functions to set your custom titles.

function GetInitializationPageTitle() { return "Your custom page title..."; } function GetInitializationText() { return "Your custom initialization text..."; }

Control appearance with stylesheet classes

Many controls have a CCssssCCllaassss property which can be used to specify the appearance of a

control. WebInfo has a few predefined classes that can be used. It is also possible to add

your own CSS classes in a stylesheet file ([filename].css) located in the Custom folder in

WebInfo.

Themes

WebInfo gives you the option to choose a theme for your solution. A theme gives your

application a predefined uniform look and feel.

Themes do not only change the colors and fonts of your solution, but in many cases alters

shape and size as well. This means that your application must be designed from the start

with a particular theme in mind. A later change might cause controls to overlap or disappear

from view.

WebInfo comes packaged with three themes – Agresso, A12 and CarbonLight. You set the

theme of your choice by changing the value of the setting WebInfoTheme in web.config.

The Agresso theme is meant to mimic the look and feel of the earlier Agresso Self Service

applications. It has a corporate look with small controls that allows for much information on

a page.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 73(108)

Documentation

Agresso WebInfo 3.9

The A12 theme is meant to mimic the look and feel of the current Unit4 feel. It also has a

corporate look with small controls that allows for much information on a page.

The CarbonLight theme has a modern, soft touch and was created with the intention of

displaying data in a way that is easy on the user to digest. Controls are larger and easier to

read. Important details are highlighted to grab the user’s attention.

It is possible to customize an existing theme or create a completely new one by adding css

files in your Custom\Themes\[THEME] directory. Any styles here will override the settings

of the normal theme. By making changes to the theme in the custom folder instead of editing

the theme directly, you protect your changes through upgrades of WebInfo.

Sida 74(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Printing from WebInfo

Since WebInfo runs in a web browser you always have the option to print it as you would

any web page on the Internet. As this often is a problematic process resulting in scrollbars

where they are not wanted, cut off pages both horizontally and vertically and more, WebInfo

have a number of JavaScript functions to let you reformat the page for printing.

JavaScript Functions for Printing

First there is the WebInfo.Print() function that opens up the current page in a new window,

changes the CSS style sheet as to remove scrollbars and let tables flow to their full length if

possible, then it executes the web browsers own print functionality. After printing the new

page it closes it.

There is also another version of print called WebInfo.PrintPage(). The difference is that

PrintPage removes all controls from the printout except for tables and filterinfos given that

there are any tables on the page.

Finally there is the WebInfo.Preview() function that does the same as the WebInfo.Print()

function except that it does not print automatically and it does not close the new window.

This leaves the user with new window displaying what the page would look like if printed.

These functions can be attached to a button or a link by setting their URL to: javascript: WebInfo.Print();

Considerations when Printing a Web Page

No matter how you format a page in WebInfo the browser still puts it limitations on how the

final print will render the page. The most common reason for pages not printing the way

they are supposed is that web browsers commonly do not know how to print positioned

elements correctly. These elements will often be handled as atomic units that, even if they

contain text, cannot flow across pages or extend as the page width allows. The result is

controls that get truncated horizontally and cut of abruptly vertically.

What can be done if a page needs to be printed correctly is composing a separate print page

in such way that it all fit into the width of the paper. Horizontally, using a flow layout

without absolute positioned elements helps out but table objects will still break rows unclean

on page breaks. As the browsers get more advanced this might change but as of the time of

writing there are not enough CSS tags supported that allows you to tell the browser how or

when to break the page.

If you want to hide an object when printing, such as buttons or personal information, there is

a “hideonprint” class that can be used. There is also a “hideframeonprint” class that let you

hide the borders of a frame object when printing.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 75(108)

Documentation

Agresso WebInfo 3.9

Security There are several security threats to a web application like WebInfo. This chapter starts by

describing the most common threats that affect web applications today and then this chapter

has a section describing how WebInfo handles security to provide a secure foundation for

your application.

Common Security Threats

SQL Injection

SQL injection is a technique that exploits a web application connected to a SQL server by

writing clever SQL code as data input, and thereby making the SQL server execute other

code than was intended by the application. A malicious user can input SQL code instead of

normal data. The malicious SQL code is then inserted into the SQL statement by the web

application and is then sent to the SQL server. This malicious SQL code can retrieve, insert,

update or delete sensitive data.

Cross-site scripting (XSS)

Cross-site scripting is threat that occurs when a web application presents data that was

previously inputted by another user. A malicious user can input code such as HTML-code or

client-side scripting code (JavaScript, VBScript) instead of normal data. When this code is

then later presented to another user it could e.g. trick the user to reinput the password and

then save it to another server for future use.

Man-in-the-middle

A web application running over HTTP protocol is open to attacks by malicious users that

want to retrieve or change the data flowing between the user and the server. The attacker

sets up two connections, one between the victim and himself, and one connection between

the server and himself. Then he can alter and view the data as it passes him.

Cross-Site Request Forgery (CSRF)

If you have authenticated yourself against one web application, and later on use another web

application, the later application could silently forge a request against the previous

application using your account privileges.

WebInfo Security

WebInfo strives to make it easy for you to create a secure web application with as little

effort as possible. To accomplish this WebInfo provides different options for securing every

part of your application throughout your whole solution from installation to logout. The

details for securing your solution are described below.

Security at Installation

Admin WebInfo Account

Sida 76(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

During the installation of WebInfo, you will have to create an admin account. This account

will allow you to log into development mode in WebInfo from another server. The password

will be stored using a one-way encryption algorithm to ensure its protection. If you at a later

stage want to remove support for remote logins you can delete the admin account from

WebInfo’s edit mode. If you do so, you will only be able to log into development mode on

the host machine.

Admin DB Account

During the installation of WebInfo you will have the option of installing your configuration

in the database using an administrative account. If you choose to do that WebInfo will use

the admin account to install all the necessary configuration tables, and then grant the

necessary privileges to run WebInfo to the runtime db account. The login details of the

admin account will then be discarded. This ensures that your runtime account for WebInfo

will have the least amount of necessary privileges to run the application. If you want to

change the db account at a later stage it is possible to do so by changing the configuration db

account in web.config (assuming you have not chosen to encrypt web.config).

Encrypted configuration

During the installation of WebInfo you will have the option of increasing the security of

your solution by encrypting your configuration files. This will prevent a user, who has

managed to get hold of your configuration files, from reading your connection strings and

other sensitive information.

Application Security

Obfuscated & Signed Code

WebInfo’s application code has been obfuscated which means that it is difficult to

decompile. This makes it much harder for an attacker to look for potential vulnerabilities if

they have access to the application. It has also been digitally signed, preventing any

modifications to the code after compilation.

Tested with HTTPS

WebInfo has been tested to work under HTTPS. If you choose to protect your site by

securing it with HTTPS you will have a reasonable protection against man-in-the-middle

attacks.

Security at Authentication

Authentication methods

WebInfo supports several variations of authentication (windows integrated, forms, url, none,

custom, agresso url and agresso sso). The authentication mode is set either on a global

master page basis, or can be overridden on a page basis. This allows you to have public

sections of your solution as well as protected sections. Each authentication method is

described in more details in the chapter about Base Configuration.

Nonce

To protect against cross-site request forgery WebInfo has implemented nonce protection.

This means that each request submitted to WebInfo must either be a login request or be

submitted with the correct nonce token created by WebInfo in the previous five requests.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 77(108)

Documentation

Agresso WebInfo 3.9

This ensures that the request was made from WebInfo. Any request that fails to abide by

these rules will cause an automatic logout from WebInfo. Automatic authentication types

such as “windows integrated” will send the user to the start page after clearing the session

since the concept of being logged out does not exist.

A side effect of this implementation is that using the back button in the browser will cause a

logout since the page is not properly posted. If you want the user to receive a warning

instead of being logged out, you can either set page property DisableLeavingPageWarning

to disabled. If this parameter is disabled the user will get a warning every time he tries to

leave a page using web browser navigation. If you want to disable the nonce protection

completely you can do so by setting WebInfoDisableNonce to 1 in web.config. If you do

that, the back button will work, but you must have in mind when designing your pages that

the user might navigate differently than your original intentions.

Authorization

Permission Objects

WebInfo’s main mean of handling authorization is through the permission objects.

Permission objects are non-graphical objects that consist of two important parts, an

authorization method and a securable. The securable is the object to be secured. It can either

be a control or a page. If the authorization fails for a control it will not be rendered. If

authorization fails for a page you will be redirected to another page.

There are several methods of authorization. Listed below are the ones supported by

WebInfo:

AlwaysApprove – Always approves the security check. i.e. a global control might

need authorization on all pages except on one public page. You could set approve on

the specific page and it would override the global setting.

Always Deny – Always denies the security check, i.e. you have a global control and

want to hide it on some pages for everybody.

Sql – You can write your own custom sql logic to decide whether a user is

authorized or not.

Code – You can write your own custom server side script block to decide whether a

user is authorized or not.

User security level – If you set up the user’s accounts in WebInfo you can grant them

a security level which can be used to verify their access.

Agresso role ids – If you use an authentication method based around agresso

accounts you can use agresso role memberships as a mean for authorization.

Agresso menu ids - If you use an authentication method based around agresso

accounts you can retrieve the authorization privileges on a certain menu item in

agresso and apply it to your securable. This allows an agresso administrator to

simply alter privileges in WebInfo from Agresso.

Users – You can grant authorization to a specific list of users.

User groups – If you use windows authentication you can grant authorization to a

specific list of active directory user groups.

LDAP Queries

If you cannot base your authorization on group membership alone, WebInfo allows you to

write your own queries against LDAP which gives you to access to all the data in the active

Sida 78(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

domain. This way you could for instance grant access based on which department or account

the user belongs to if that information is available in the AD.

The syntax to LDAP queries is a little tricky and requires knowledge of the AD setup.

Example: SELECT CN, telephoneNumber, mobile, mail FROM

'LDAP://OU=Sweden,OU=Locations,DC=corp,DC=u4agr,DC=com' WHERE

objectCategory='Person' AND CN = 'Johan*' ORDER BY CN

Validating User Input

System supported validations

There are many aspects to think about when securing your specific configuration for

WebInfo. One of the most important is validating your user input. WebInfo provides some

automatic validation of user input in the regard that for fixed value option controls

(dropdowns, listboxes etc) WebInfo will not allow a user to post a value that is not one of

the options.

Custom Validations

To ensure that a user does not provide a bad value as input you can write your own

validation method or use one of WebInfo’s preconstructed basic validation methods.

Validators can be attached to variables or input controls (textboxes etc), and WebInfo will

make sure that all values being passed in passes the attached validators before setting the

value.

Preconstructed validation methods include:

DateTimeValidator (Allows only datetimes)

IntegerValidator (Allows only integers)

DecimalValidator (Allows only decimals)

Custom validation methods include:

RegExpValidator (Value must match the defined regular expression)

SqlValidator (Result of sql query must be 1)

ScriptValidator (Result of server-side script must be true)

ClientscriptValidator (Only validates client-side and is used for providing quick user

feedback rather than actual security).

Data typing

In many cases it might be of interest to ensure that a variable always is of a certain data type.

In these cases WebInfo provides means of setting a data type for each variable. This data

type will enforce that only values of accurate data types are allowed and also provide a

foundation for using the variable in parameterized sql queries, casting the variable to the

appropriate parameter type.

Securing Variables

In some cases you may wish to ensure that a variable can only be altered under specific

closely monitored circumstances. To accomplish this you have the option of specifying a

variable as protected. Protecting a variable means that the variable is read-only except when

set using an executesql specifically allowed to override the protected variable (allowed by

setting SetSecureVariables property on executesql object). Protected variables can easily be

initialized to a hard coded value using the variables editor. WebInfo’s internal system

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 79(108)

Documentation

Agresso WebInfo 3.9

variables are protected by default, and careful consideration should be taken before

overriding one of those variables.

Writing Secure SQL Statements

Parameterization

One of the most common attacks on a database driven application is using SQL injection to

modify the statements to do something else than intended. To ensure the protection of your

system you should always take care to parameterize all variable data in the sql statements. In

WebInfo you normally access the value of a variable by preceding it with a colon (:), e.g.

you type :myvar to ask WebInfo to replace the text with the contents of the myvar-variable.

To change pure replacement in an sql to a parameterization, all you have to do is precede the

variable name with :@ instead, e.g. :@myvar. By using this later notation you are telling the

database that the contents of myvar should only be used for its value, and no sql contained in

the variable should ever be executed.

If you have a comma separated list of items in a variable that you want to use in an IN-

statement, you can parameterize the variable by prefixing it with :@IN@ instead, this will

generate a parameter for each comma-separated value. E.g. a variable called ‘animals’

containing the value “ ‘cat’, ‘dog’, ‘monkey’ “ referenced by :@IN@animals, will result in

three comma separated parameters containing the values ‘cat’, ‘dog’ and ‘monkey’. This

allows for queries such as “SELECT * FROM animals WHERE animalname IN

(:@IN@animals)”.

Protecting columns

When you use a sql statement to populate an editable table, there are times that you want to

make sure that one of the columns is only updatable under certain circumstances. WebInfo

allows for protecting a column by selecting the column with the suffix _input and setting it

to some value other than 1. Options for _input are:

0: Hide column

1: Editable column

2: Disabled column

3: Label column

4: Do not render column

5: Disabled but updatable column

An example to clarify:

You have an editable table where you can edit a user’s phone number and security level.

You want everyone to be able to update the user’s phone number, but only John should be

able to update the security level. Since your update statement must be able to handle all

cases you use the following statement:

“UPDATE users SET phone=:@phone, securitylevel=:@securitylevel WHERE

username=:@username”.

To ensure that no malicious user tries to modify the update data client side and post it, you

can lock the securitylevel column for everyone but John with the following statement:

Sida 80(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

“SELECT phone, securitylevel, CASE :@user WHEN ‘John’ THEN 1 ELSE 2 END AS

securitylevel_input FROM users”.

Recognizing unsafe sql statements and securing them

If you follow a few basic rules when examining and designing a sql statement you are on a

good way on securing it. Below are described the basic principles of designing a secure sql

statement:

Use parameters whenever possible.

If you see a sql statement like this:

“SELECT * FROM tblTable WHERE column1 = :column1.

Change it to:

“SELECT * FROM tblTable WHERE column1 = :@column1

If you are for some reason forced to build your sql dynamically so that a parameter is

not an alternative, always mark your variables as protected so that you have full

control of how the variable is set.

E.g. if you have the following statement:

“SELECT * FROM tblTable WHERE :whereexpression”

The variable whereexpression should be marked as protected and only be set in a

specific executesql statement with permission to overwrite the value of the variable.

Whenever possible, use validators to control the values of your variables. Example:

If you are using a dynamic sql that chooses which sql id to use depending on the

contents of a variable, make sure that you have a validator on the variable so that it

only can contain appropriate sql ids.

E.g. You have a table that could either be populated from sqlid 54 or sqlid 55

depending on the contents of variable :populatingsql. The select sql of the table is set

to “:populatingsql”. You should add a validator to variable populatingsql so that it

can only contain the value 54 or 55.

If you are using an input table, always use your select statements to control access to

your columns. Detailed example is given in the previous section “Protecting

columns”.

Whenever possible, restrict access to data in all sqls based on logged in user and its

privileges.

E.g. On page 1 your user’s security level allows him to show financial data for

company A and company B. On page 2 that data is to be displayed. Instead of using

the sql: “SELECT * FROM tblEconomy WHERE company = :@selectedcompany”.

You should use “SELECT * FROM tblEconomy e LEFT OUTER JOIN

tblCompanyAccess ca ON ca.company = e.company WHERE company =

:@selectedcompany AND ca.privilegeduser = :@user.”

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 81(108)

Documentation

Agresso WebInfo 3.9

By doing this you introduce an extra layer of protection in case you make a mistake

on another page in your solution and accidently allow the variable selectedcompany

to be set to a faulty value.

Handling user inputted data

Displaying user inputted data

The internet is not always a safe place for your computer. The browsers we are using are

often proved to contain security holes which allow unsafe code to be executed on your

computer if you visit a malicious page. If you have a solution that allows users to enter data

that can be displayed to other users, they could save html code that contains a script that

when shown to another user redirects him to a malicious page. To provide security against

this type of attack, WebInfo will as default never render data in html format. As long as you

do not change any settings, your solution will be safe from this type of attack.

However there are times when you might want to render html to the user that you know to

be safe. As an example you might want to render your own clickable image in a column in

your table by using a select statement such as “SELECT ‘<img src=’myimg.jpg’

onclick=’DoSomething()’/> AS theimage”. If you need this option, WebInfo allows you to

disable XSS protection on page level, specific columns and specific variables. Look for the

disablexssprotection setting on the appropriate object.

Receiving user inputted data

The protection above only protects dangerous data from being shown in WebInfo, not from

being inputted. If you are using WebInfo as an input system for data that might be displayed

in another less secure web application you should also make sure that the data being written

to your database is safe as well. A good way of doing this is by adding a variable data type

matching your input controls and setting them to data type StringXSSSafe.

Opening up your solution for AJAX requests

AjaxExecuteSqlAndScript

By default WebInfo will only allow sql and script calls that are part of the server side

solution. However interest is growing for web applications that do not make full page

postbacks all the time. To accomplish this, you might want to update just a single control on

the page based on a value the user selects. This puts demand on the application to be able to

act upon javascript requests rather than postbacks.

WebInfo has an extensive client library for just this purpose. To activate this functionality

you set the value of AjaxExecuteSqlAndScript to 1 on the appropriate page object(s).

Keep in mind though that if you open up for these types of calls, experienced web users will

be able to call them at their leisure as well, using the parameters of their choice. This puts a

much higher demand on the security of your solution so that every sql statement, variable

and server side script is inherently secure, because you cannot predict how the user will call

them.

Finalizing your solution

Sida 82(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Generation of privileges

When you are done developing your WebInfo application you want to make sure that the

application runs under the least possible amount of privileges to execute correctly. WebInfo

makes this easy by providing a function in the tools menu that is called “Analyze Sql” which

generates a list of database commands that will grant the executing account all the privileges

it needs to be able to run the queries contained in the solution, and nothing else.

Security through obscurity

WebInfoShowErrors

The less an attacker knows about your solution, the harder it is for him to find a weakness.

WebInfo protects your code by never showing any details about an error to the end user by

default. If you receive a crash in your code and want to know the details of the problem, you

either have to log on locally to the web server and provoke the error there, or you have the

set the variable WebInfoShowErrors to 1 in your web.config file (this will allow everyone to

see the details of the error).

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 83(108)

Documentation

Agresso WebInfo 3.9

Internationalization WebInfo supports most western languages out of the box but modifications are needed for

languages that need Unicode due to the number of symbols. Examples of languages that

require modification of the WebInfo solution to work are Chinese and Japanese. The

application itself already uses Unicode and therefore works fine with above mentioned

languages but changes need to be made to the database tables used to store the

configuration, module item information.

Modifying the Database to Support Unicode

The challenge lies in storing text in configuration and module tables as the VARCHAR

column type (or VARCHAR2 for Oracle) normally used to store text differs from the

NVARCHAR column type used to store Unicode text. Also Unicode characters require

twice the space of non-Unicode characters resulting in a NVARCHAR column being twice

the size of a regular VARCHAR column. So what needs to be done is manually creating the

configuration table and module table using a SQL code that creates NVARCHAR columns

instead of VARCHAR columns. Such a SQL code can be found in the Setup SQL menu

option in the Setup menu. This feature is considered experimental.

Sida 84(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Integrations Although WebInfo can run standalone, for some customers there is an increased value in

integrating WebInfo into their existing solutions. This chapter describes how to integrate

WebInfo with some common environments.

Connecting Agresso to WebInfo

WebInfo has support for making easy integrations with Agresso. To setup integration with

Agresso there are a few things you have to do.

Ensure that the menu setting Show Agresso Objects is activated.

Set the AggrreessssooCCoonnnneeccttiioonnIIdd page property to appropriate connection.

Install the ACT components and login table by choosing Setup->Install Integration

ACT from edit menu in WebInfo.

Create your Agresso links by creating them in Setup->Edit Agresso

Office/SelfService Menu. The links are modelled in a hierarchy. The leaves are links

and the rest are folders. Links should be written in this format to start WebInfo using

agresso_url.

http://<SERVER>/<WEBINFODIRECTORY>/Default.aspx?user=:user&client=:cli

ent&securekey=:securekey&login=1&newsession=1. You can also add “&target=

_self” to open WebInfo inside Agresso. If WebInfo is installed on the same machine

as Self Service then it is preferable to use this URL format

../<WebInfoDIRECTORY>/Default.aspx?user=:user&client=:client&securekey=:sec

urekey&login=1&newsession=1 instead.

For more information about what the url parameters mean – see the WebInfo

Reference Manual.

Grant privileges on your created links in Agresso.

Connecting Sharepoint to WebInfo

WebInfo has support for making easy integrations with SharePoint. To setup integration

with SharePoint there are a few things you have to do.

Copy _Integration\SharePoint\WebInfoSharepoint.dll to appropriate bin folder in

SharePoint.

Open appropriate Sharepoint web.config and change the following:

- Add the following row to SafeControls: <SafeControl

Assembly="WebInfoSharePoint, Version=1.0.0.0, Culture=neutral,

PublicKeyToken=9bb32b018e636b54" Namespace="WebInfoSharePoint"

TypeName="*" Safe="True" AllowRemoteDesigner="False" />

- Ensure that trust is set to WSS_Medium

Copy _Integration\SharePoint\WebInfoWebPart.dwp to appropriate bin folder

Start SharePoint Site

Enter Site Actions -> Site Settings

Enter Galleries -> Web Parts

Choose Upload and browse to WebInfoWebPart.dwp and install

Add Web Part to SharePoint Pages.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 85(108)

Documentation

Agresso WebInfo 3.9

WebInfo Licensing WebInfo is licensed on the total number of users that have access to the solution, not

simultaneous users. Each user that signs into the solution get logged by WebInfo and when

the licensed amount of users is reached, the next user will be presented with an error

message stating that the maximum number of users has been reached, though there is a

mechanic that removes users from the WebInfo log after three months to let new ones use

the solution in the case others stop using it.

Licensing Data

WebInfo is set to demo mode after installation and needs to be licensed before it can be used

at its full capacity. The WebInfo serial number contains information about the server virtual

folder, how many users that can use WebInfo and how the WebInfo licence data is stored.

This serial number must match the install key configured into the solution.

The licence data can be stored either in file or in database. If a clustered solution is used this

data should be stored in database and not in file.

The install key must match the licence data. Also, the number of users which are logged in

the licence file, cannot supersede the maximum number of users stated in the configuration.

The licence data is based on different things depending on where it is stored. If the data is

stored in file it contains information about such things as virtual directory, domain and

machine name. If the licence data is stored in a database it is based on unique DB

information making it very sensitive to changes in the solution.

If the licence file gets corrupted or do not match the new installation when doing a

configuration move, it will result in the solution going into Demo mode.

The WebInfo support can help you reset the licence file and resolve this issue if it occurs.

How to License WebInfo

When installing WebInfo you need to licence it before production. The fastest way to do this

is to go into the directory where WebInfo is installed for the solution you want to licence.

There you open the web.config configuration file in an editor that do not format the content

such as notepad, notepad++ or similar. Configure the number of users needed. Save the file

and start the solution on the local machine where it is installed. Inside you go into EditMode

and view the About-information in the Help menu. Copy this information and summit it to

the WebInfo support. They will return an install key which you are to enter into the

web.config configuration file. Save the file and recycle the application pool. Now the

solution should be licensed.

For more information please check out the WebInfo E-guides.

Sida 86(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 87(108)

Documentation

Agresso WebInfo 3.9

WebInfo as a web service WebInfo can be used as a web service to serve another WebInfo solution with data from

SQL queries. To set a SQL query to work as a web service you only need to set its

WWssSShhaarreedd property to 1 instead of 0. On the caller side a web service type connection needs

to be created with proper authentication, and finally a calling SQL containing the code: SELECT * FROM ExecuteSqlId(<the sqlid on the serving side>)

WebInfos web service resides in WebInfos virtual directory and is called

WebInfoService.asmx. The credentials provided must match an existing account defined in

WebInfos user table.

If you want a secure solution you might want to set up the service to run over HTTPS as the

credentials will be sent in clear text.

Sida 88(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Troubleshooting WebInfo Sometimes advanced WebInfo developers find the need to trouble shoot solutions; finding

the source to e.g. intermittent bad performance or unexpected client side behaviour. For

those times WebInfo comes with a number of advanced features to give you a better view

into its inner workings.

Showing Error Messages in Runtime

If you only experience an error in runtime and not in EditMode you can turn on the

Web.Config parameter WebInfoShowErrors by setting it to “1”.

Logging

Sometimes the performance hit comes from SQL statements performing badly due to bad

data selections, bad SQL coding or badly indexed databases.

Setting the Web.Config parameter WebInfoLogVerbose to “1” makes WebInfo log more

information into the log file.

It is possible to have WebInfo create detailed logs in a database, and then browse the logs

using a special logging configuration available for download. For more information

regarding this, refer to e-guides.

JavaScript Console

When the web client throws an exception you might want take a look at the JavaScript code

and maybe simulate function calls to see if you can trigger error and maybe create a work

around. This can e.g. be due to new browser bugs or new browser features that were not

implemented when the software was released that change the behaviour of an advanced

solution.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 89(108)

Documentation

Agresso WebInfo 3.9

For moments like this WebInfo have a built in JavaScript Console available in Edit Mode,

accessible by Ctrl+J. In the console you can type any JavaScript and execute it by clicking

OK. If you want to save something you wrote in the console between page loads, press

Ctrl+S.

Adding the code to a WebInfo Script object on the page makes it load the code later than the

WebInfo original code, overriding objects and functions from the WebInfo JavaScript

library forcing custom behaviour when needed.

Trace Server Code Execution Time

By setting the Web.Config parameter trace to enabled="true" you enable advanced statistics

on your page. By clicking around some in the relevant solution you then collect statistics

about code execution time. This statistic is available on the page /Trace.aspx. Turning trace

on increases the load on the server and this feature should never be left on in a production

environment.

Recording and Playback

It is possible in WebInfo to record a solution complete with the current configuration, the

results from all executed SQL statements, connection information, logged in user and other

WebInfo states, and save this information in an encrypted file. This allows you to record a

session where you experience a specific problem and send the recording to a WebInfo

support technician for analysis. This in turn, allows the technician to see exactly what is

going wrong in the solution. Using this information, that person will be able to correct your

configuration and send it back to you, as a solution suggestion. If the error stems from a bug

in the software, the recording greatly helps the development team to correct the bug and

verify that your solution will behave as intended once your solution is patched.

You can also use this recording for demonstration purposes, to showcase certain

functionality of your solution offline.

Before creating a recording you should be confident that it is ok for you to store the

requested data, user information, WebInfo configuration and database connection

information in a file. This information is encrypted but can be accessed by WebInfo

developers for debugging purposes.

To start a recording, choose Start Recording in the tools menu. The page then reloads and in

it will say “Recording” in the web browsers header. From now on, all data that you request

in your solution will be recorded.

To stop a recording select Stop Recording/Playback in the tools menu if you are in edit

mode or click the red ball in the upper right corner if you are in runtime mode. The file is

automatically saved to the _Backups directory in the WebInfo installation directory.

To playback a recording go to the Setup menu and select either the Restore Recording or the

Restore from Recording option. In the fold out menu of the Restore from Recording option

all recordings saved in the _Backups directory is shown. Restore Recording will instead let

you browse for a file and restore this.

Sida 90(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Restoring a recording never changes your existing configuration. When you stop a playback,

using either the Stop Recording/Playback option in the Tools menu or by clicking the red

ball marker in the upper right corner, WebInfo empties its cache and session and reverts to

the original solution, but you will be logged out and loose all previous session information.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 91(108)

Documentation

Agresso WebInfo 3.9

WebInfo Technical Perspective

Technology

WebInfo is an ASP.NET 2.0 application. The most important functions are supported by

Microsoft’s Internet Explorer, Firefox, Safari and Chrome. AJAX technology has also been

used to improve the user experience. A lot is built on a so called Postback technology, which

means that the page is “drawn” anew when the control information is changed or if the page

changed.

WebInfo 3 is the first WebInfo version that does not require any database connection at all.

If a database should be used, most databases with OLE DB or ODBC support can be used as

a data warehouse. Oracle or SQL Server can also be used to store the WebInfo

configuration.

Architecture

Figure 1: System overview

WebInfo consists of two parts as seen in the picture above. The first part is the configuration

table, which is either stored in a database table or in an XML file. The second part is the

WebInfo engine, which is an ASP.NET application that reads the data from the

configuration data store to create an object model for a page; this is then rendered as a

HTML page.

The configuration table consists of several solution specific configurations and a system

configuration. The solution specific configurations consist of different objects that belong to

a specific solution.

Table 2: Comparison WebInfo 2.x and 3.x WebInfo 3.x WebInfo 2.x

Configuration storage Database or XML file Database

Number of tables 1 (Extra tables might be required for some login types and controls.)

2 per configuration and a number of configuration common tables

Views Created within the engine and the definitions are stored in the

Database views

Sida 92(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

configuration

Engine ASP.NET (C#) ASP (VBScript)

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 93(108)

Documentation

Agresso WebInfo 3.9

Appendix A

Table architecture

Ex 1

Utfall Budget

Nämnd Perioden Ack Perioden Ack Zoom

Räddningstjänsten -18991 -1604921 -18991 -1604921 Spec Ansv2 Vhet2

Miljö- och byggnämnden -71907 -1633906 -71907 -1633906 Spec Ansv3 Vhet3

Överförmyndaren -1487 -127983 -1487 -127983 Spec Ansv4 Vhet4

Totalt -92385 -

3366810 -92385 -3366810

Ex 2

h0 1 Kontogrupp Perioden Ack Perioden Ack Zoom

d 1 Taxor och avgifter -18991 -1604921 -18991 -1604921 Trans

d 1 Intäkter hyror och arrenden -71907 -1633906 -71907 -1633906 Trans

d 1 Erhållna bidrag -1487 -127983 -1487 -127983 Trans

s1 1 Summa Intäkter -92385 -

3366810 -92385 -3366810

s1 2

d 1 Kapitalkostnader -71907 -1633906 -71907 -1633906 Trans

d 1 Finansiella kostnader -1487 -127983 -1487 -127983 Trans

s1 1 Summa Kostnader -73394 -

1761889 -73394 -1761889

s1 2

s0 1 Totalt -165779 -

5128699 -165779 -5128699 Trans

Sida 94(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Ex 3

h0 1 Kontogrupp Perioden Ack Perioden Ack Zoom

h2 1 Intäkter

d 1 Taxor och avgifter 18991 1604921 -18991 -1604921 Trans

d 1 Intäkter hyror och arrenden 71907 1633906 -71907 -1633906 Trans

d 1 Erhållna bidrag 1487 127983 -1487 -127983 Trans

s2 1 Summa Intäkter 92385 3366810 -92385 -3366810

s2 2

h2 1 Kostnader

d 1 Kapitalkostnader -71907 -1633906 -71907 -1633906 Trans

d 1 Finansiella kostnader -1487 -127983 -1487 -127983 Trans

s2 1 Summa Kostnader -73394 -

1761889 -73394 -1761889

s2 2

s1 1 TB 18991 1604921

s1 2 TB% 20.6 47.7

s1 3

s0 1 Totalt 18991 1604921 -165779 -5128699 Trans

Ex 4

h0 1 Utfall Budget

h0 2 Nämnd Perioden Ack Perioden Ack Zoom

d 1 Räddningstjänsten -18991 -1604921 -18991 -1604921 Spec Ansv2 Vhet2

d 2 122

d 1 Miljö- och byggnämnden -71907 -1633906 -71907 -1633906 Spec Ansv3 Vhet3

d 2 342

d 1 Överförmyndaren -1487 -127983 -1487 -127983 Spec Ansv4 Vhet4

d 2 119

s0 1 Totalt -92385 -

3366810 -92385 -3366810

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 95(108)

Documentation

Agresso WebInfo 3.9

Appendix B

3rd party licences and mentions

WebInfo uses several 3rd

party products to deliver its functionality. Without the work of the

people behind those products, our work would have been much harder.

Thank you!

ANTLR 3

License: The BSD License

[The BSD License]

Copyright (c) 2003-2008, Terence Parr

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation

and/or other materials provided with the distribution.

Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without

specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,

INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE

DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,

EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF

USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT

LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF

THE POSSIBILITY OF SUCH DAMAGE.

ChartFX

By: SoftwareFX

ASPxPivotGrid

By: DevExpress

WebGrid & WebCombo

By: Intersoft Solutions

Inno Setup

By: Jordan Russel

Sida 96(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Jint

License: The MIT License (MIT)

Copyright (c) 2009 Evaluant

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to

deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE

WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,

ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

C# Code Format

By: Jean-Claude Manoli

QueryADataSet

By: Peersoft

UnhandledExceptionModule

License: The MIT License (MIT)

Copyright (c) 2008 Andras Vass

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to

deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE

WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,

ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Excel XML Writer

By: Carlos Aguilar Mares

Website: http://www.carlosag.net/Tools/ExcelXmlWriter

LuaInterface

License: The MIT License (MIT)

Copyright (c) <year> <copyright holders>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to

deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE

WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,

ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 97(108)

Documentation

Agresso WebInfo 3.9

C# Eval Function License: CPOL 1.02

Preamble This License governs Your use of the Work. This License is intended to allow developers to use the Source Code and Executable Files provided as part of the Work in any application in any form.

The main points subject to the terms of the License are:

Source Code and Executable Files can be used in commercial applications;

Source Code and Executable Files can be redistributed; and

Source Code can be modified to create derivative works.

No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided "as-is".

The Article(s) accompanying the Work may not be distributed or republished without the Author's consent

This License is entered between You, the individual or other entity reading or otherwise making use of the Work licensed pursuant to this License and the individual or other entity which offers the Work under the terms of this License ("Author").

License

THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CODE PROJECT OPEN LICENSE ("LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS

AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HEREIN, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE AUTHOR GRANTS YOU THE RIGHTS CONTAINED HEREIN IN CONSIDERATION OF YOUR ACCEPTANCE OF

SUCH TERMS AND CONDITIONS. IF YOU DO NOT AGREE TO ACCEPT AND BE BOUND BY THE TERMS OF THIS LICENSE, YOU CANNOT MAKE ANY USE OF THE WORK.

1. Definitions.

a. "Articles" means, collectively, all articles written by Author which describes how the Source Code and Executable Files for the Work may be used by a user.

b. "Author" means the individual or entity that offers the Work under the terms of this License.

c. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works.

d. "Executable Files" refer to the executables, binary files, configuration and any required data files included in the Work.

e. "Publisher" means the provider of the website, magazine, CD-ROM, DVD or other medium from or by which the Work is obtained by You.

f. "Source Code" refers to the collection of source code and configuration files used to create the Executable Files.

g. "Standard Version" refers to such a Work if it has not been modified, or has been modified in accordance with the consent of the Author, such consent being in the full discretion of the Author.

h. "Work" refers to the collection of files distributed by the Publisher, including the Source Code, Executable Files, binaries, data files, documentation, whitepapers and the Articles.

i. "You" is you, an individual or entity wishing to use the Work and exercise your rights under this License.

2. Fair Use/Fair Use Rights. Nothing in this License is intended to reduce, limit, or restrict any rights arising from fair use, fair dealing, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other

applicable laws.

3. License Grant. Subject to the terms and conditions of this License, the Author hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as

stated below:

a. You may use the standard version of the Source Code or Executable Files in Your own applications.

b. You may apply bug fixes, portability fixes and other modifications obtained from the Public Domain or from the Author. A Work modified in such a way shall still be considered the standard version and will be subject to this License.

c. You may otherwise modify Your copy of this Work (excluding the Articles) in any way to create a Derivative Work, provided that You insert a prominent notice in each changed file stating how, when and where You changed that file.

d. You may distribute the standard version of the Executable Files and Source Code or Derivative Work in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution.

e. The Articles discussing the Work published in any form by the author may not be distributed or republished without the Author's consent. The author retains copyright to any such Articles. You may use the Executable Files and Source Code pursuant to this

License but you may not repost or republish or otherwise distribute or make available the Articles, without the prior written consent of the Author.

Any subroutines or modules supplied by You and linked into the Source Code or Executable Files this Work shall not be considered part of this Work and will not be subject to the terms of this License.

4. Patent License. Subject to the terms and conditions of this License, each Author hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have

made, use, import, and otherwise transfer the Work.

5. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:

a. You agree not to remove any of the original copyright, patent, trademark, and attribution notices and associated disclaimers that may appear in the Source Code or Executable Files.

b. You agree not to advertise or in any way imply that this Work is a product of Your own.

c. The name of the Author may not be used to endorse or promote products derived from the Work without the prior written consent of the Author.

d. You agree not to sell, lease, or rent any part of the Work. This does not restrict you from including the Work or any part of the Work inside a larger software distribution that itself is being sold. The Work by itself, though, cannot be sold, leased or rented.

e. You may distribute the Executable Files and Source Code only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy of the Executable Files or Source Code You distribute and

ensure that anyone receiving such Executable Files and Source Code agrees that the terms of this License apply to such Executable Files and/or Source Code. You may not offer or impose any terms on the Work that alter or restrict the terms of this

License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute the Executable Files or Source

Code with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License.

f. You agree not to use the Work for illegal, immoral or improper purposes, or on pages containing illegal, immoral or improper material. The Work is subject to applicable export laws. You agree to comply with all such laws and regulations that may apply to

the Work after Your receipt of the Work.

6. Representations, Warranties and Disclaimer. THIS WORK IS PROVIDED "AS IS", "WHERE IS" AND "AS AVAILABLE", WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OR CONDITIONS OR GUARANTEES. YOU, THE USER, ASSUME ALL

RISK IN ITS USE, INCLUDING COPYRIGHT INFRINGEMENT, PATENT INFRINGEMENT, SUITABILITY, ETC. AUTHOR EXPRESSLY DISCLAIMS ALL EXPRESS, IMPLIED OR STATUTORY WARRANTIES OR CONDITIONS, INCLUDING WITHOUT LIMITATION,

WARRANTIES OR CONDITIONS OF MERCHANTABILITY, MERCHANTABLE QUALITY OR FITNESS FOR A PARTICULAR PURPOSE, OR ANY WARRANTY OF TITLE OR NON-INFRINGEMENT, OR THAT THE WORK (OR ANY PORTION THEREOF) IS CORRECT,

USEFUL, BUG-FREE OR FREE OF VIRUSES. YOU MUST PASS THIS DISCLAIMER ON WHENEVER YOU DISTRIBUTE THE WORK OR DERIVATIVE WORKS.

7. Indemnity. You agree to defend, indemnify and hold harmless the Author and the Publisher from and against any claims, suits, losses, damages, liabilities, costs, and expenses (including reasonable legal or attorneys’ fees) resulting from or

relating to any use of the Work by You.

8. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL THE AUTHOR OR THE PUBLISHER BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL,

PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK OR OTHERWISE, EVEN IF THE AUTHOR OR THE PUBLISHER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

9. Termination.

a. This License and the rights granted hereunder will terminate automatically upon any breach by You of any term of this License. Individuals or entities who have received Derivative Works from You under this License, however, will not have their licenses

terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 6, 7, 8, 9, 10 and 11 will survive any termination of this License.

b. If You bring a copyright, trademark, patent or any other infringement claim against any contributor over infringements You claim are made by the Work, your License from such contributor to the Work ends automatically.

c. Subject to the above terms and conditions, this License is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, the Author reserves the right to release the Work under different license terms or to stop distributing the

Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect

unless terminated as stated above.

10. Publisher. The parties hereby confirm that the Publisher shall not, under any circumstances, be responsible for and shall not have any liability in respect of the subject matter of this License. The Publisher makes no warranty whatsoever in

connection with the Work and shall not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. The

Publisher reserves the right to cease making the Work available to You at any time without notice

11. Miscellaneous

a. This License shall be governed by the laws of the location of the head office of the Author or if the Author is an individual, the laws of location of the principal place of residence of the Author.

b. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this License, such provision shall be

reformed to the minimum extent necessary to make such provision valid and enforceable.

c. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.

d. This License constitutes the entire agreement between the parties with respect to the Work licensed herein. There are no understandings, agreements or representations with respect to the Work not specified herein. The Author shall not be bound by any

additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Author and You.

Sida 98(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

ASP.NET RSS Toolkit

License: Microsoft Public License (Ms-PL)

Microsoft Public License (Ms-PL)

This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use

the software.

1. Definitions

The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.

A "contribution" is the original software, or any additions or changes to the software.

A "contributor" is any person that distributes its contribution under this license.

"Licensed patents" are a contributor's patent claims that read directly on its contribution.

2. Grant of Rights

(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a

non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its

contribution or any derivative works that you create.

(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-

exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of

its contribution in the software or derivative works of the contribution in the software.

3. Conditions and Limitations

(A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.

(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such

contributor to the software ends automatically.

(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the

software.

(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this

license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that

complies with this license.

(E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have

additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors

exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.

JQuery

License: The MIT License (MIT)

Copyright (c) 2010 John Resig, http://jquery.com/

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

JQuery Tools

License: NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 99(108)

Documentation

Agresso WebInfo 3.9

Walter Zorn Tooltip

License: LGPL

wz_tooltip.js v. 4.11

The latest version is available at

http://www.walterzorn.com

or http://www.devira.com

or http://www.walterzorn.de

Copyright (c) 2002-2007 Walter Zorn. All rights reserved.

Created 1.12.2002 by Walter Zorn (Web: http://www.walterzorn.com )

Last modified: 22.6.2007

Easy-to-use cross-browser tooltips.

Just include the script at the beginning of the <body> section, and invoke

Tip('Tooltip text') from within the desired HTML onmouseover eventhandlers.

No container DIV, no onmouseouts required.

By default, width of tooltips is automatically adapted to content.

Is even capable of dynamically converting arbitrary HTML elements to tooltips

by calling TagToTip('ID_of_HTML_element_to_be_converted') instead of Tip(),

which means you can put important, search-engine-relevant stuff into tooltips.

Appearance of tooltips can be individually configured

via commands passed to Tip() or TagToTip().

Tab Width: 4

LICENSE: LGPL

This library is free software; you can redistribute it and/or

modify it under the terms of the GNU Lesser General Public

License (LGPL) as published by the Free Software Foundation; either

version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

For more details on the GNU Lesser General Public License,

see http://www.gnu.org/copyleft/lesser.html

JQuery UI

License: The MIT License (MIT) Copyright (c) <year> <copyright holders>

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Sida 100(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

Sarissa

License: Apache Apache License

Version 2.0, January 2004

http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,

and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by

the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all

other entities that control, are controlled by, or are under common

control with that entity. For the purposes of this definition,

"control" means (i) the power, direct or indirect, to cause the

direction or management of such entity, whether by contract or

otherwise, or (ii) ownership of fifty percent (50%) or more of the

outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity

exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,

including but not limited to software source code, documentation

source, and configuration files.

"Object" form shall mean any form resulting from mechanical

transformation or translation of a Source form, including but

not limited to compiled object code, generated documentation,

and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or

Object form, made available under the License, as indicated by a

copyright notice that is included in or attached to the work

(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object

form, that is based on (or derived from) the Work and for which the

editorial revisions, annotations, elaborations, or other modifications

represent, as a whole, an original work of authorship. For the purposes

of this License, Derivative Works shall not include works that remain

separable from, or merely link (or bind by name) to the interfaces of,

the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including

the original version of the Work and any modifications or additions

to that Work or Derivative Works thereof, that is intentionally

submitted to Licensor for inclusion in the Work by the copyright owner

or by an individual or Legal Entity authorized to submit on behalf of

the copyright owner. For the purposes of this definition, "submitted"

means any form of electronic, verbal, or written communication sent

to the Licensor or its representatives, including but not limited to

communication on electronic mailing lists, source code control systems,

and issue tracking systems that are managed by, or on behalf of, the

Licensor for the purpose of discussing and improving the Work, but

excluding communication that is conspicuously marked or otherwise

designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity

on behalf of whom a Contribution has been received by Licensor and

subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of

this License, each Contributor hereby grants to You a perpetual,

worldwide, non-exclusive, no-charge, royalty-free, irrevocable

copyright license to reproduce, prepare Derivative Works of,

publicly display, publicly perform, sublicense, and distribute the

Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of

this License, each Contributor hereby grants to You a perpetual,

worldwide, non-exclusive, no-charge, royalty-free, irrevocable

(except as stated in this section) patent license to make, have made,

use, offer to sell, sell, import, and otherwise transfer the Work,

where such license applies only to those patent claims licensable

by such Contributor that are necessarily infringed by their

Contribution(s) alone or by combination of their Contribution(s)

with the Work to which such Contribution(s) was submitted. If You

institute patent litigation against any entity (including a

cross-claim or counterclaim in a lawsuit) alleging that the Work

or a Contribution incorporated within the Work constitutes direct

or contributory patent infringement, then any patent licenses

granted to You under this License for that Work shall terminate

as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the

Work or Derivative Works thereof in any medium, with or without

modifications, and in Source or Object form, provided that You

meet the following conditions:

(a) You must give any other recipients of the Work or

Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices

stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works

that You distribute, all copyright, patent, trademark, and

attribution notices from the Source form of the Work,

excluding those notices that do not pertain to any part of

the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its

distribution, then any Derivative Works that You distribute must

include a readable copy of the attribution notices contained

within such NOTICE file, excluding those notices that do not

pertain to any part of the Derivative Works, in at least one

of the following places: within a NOTICE text file distributed

as part of the Derivative Works; within the Source form or

documentation, if provided along with the Derivative Works; or,

within a display generated by the Derivative Works, if and

wherever such third-party notices normally appear. The contents

of the NOTICE file are for informational purposes only and

do not modify the License. You may add Your own attribution

notices within Derivative Works that You distribute, alongside

or as an addendum to the NOTICE text from the Work, provided

that such additional attribution notices cannot be construed

as modifying the License.

You may add Your own copyright statement to Your modifications and

may provide additional or different license terms and conditions

for use, reproduction, or distribution of Your modifications, or

for any such Derivative Works as a whole, provided Your use,

reproduction, and distribution of the Work otherwise complies with

the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,

any Contribution intentionally submitted for inclusion in the Work

by You to the Licensor shall be under the terms and conditions of

this License, without any additional terms or conditions.

Notwithstanding the above, nothing herein shall supersede or modify

the terms of any separate license agreement you may have executed

with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade

names, trademarks, service marks, or product names of the Licensor,

except as required for reasonable and customary use in describing the

origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or

agreed to in writing, Licensor provides the Work (and each

Contributor provides its Contributions) on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or

implied, including, without limitation, any warranties or conditions

of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A

PARTICULAR PURPOSE. You are solely responsible for determining the

appropriateness of using or redistributing the Work and assume any

risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,

whether in tort (including negligence), contract, or otherwise,

unless required by applicable law (such as deliberate and grossly

negligent acts) or agreed to in writing, shall any Contributor be

liable to You for damages, including any direct, indirect, special,

incidental, or consequential damages of any character arising as a

result of this License or out of the use or inability to use the

Work (including but not limited to damages for loss of goodwill,

work stoppage, computer failure or malfunction, or any and all

other commercial damages or losses), even if such Contributor

has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing

the Work or Derivative Works thereof, You may choose to offer,

and charge a fee for, acceptance of support, warranty, indemnity,

or other liability obligations and/or rights consistent with this

License. However, in accepting such obligations, You may act only

on Your own behalf and on Your sole responsibility, not on behalf

of any other Contributor, and only if You agree to indemnify,

defend, and hold each Contributor harmless for any liability

incurred by, or claims asserted against, such Contributor by reason

of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following

boilerplate notice, with the fields enclosed by brackets "[]"

replaced with your own identifying information. (Don't include

the brackets!) The text should be enclosed in the appropriate

comment syntax for the file format. We also recommend that a

file or class name and description of purpose be included on the

same "printed page" as the copyright notice for easier

identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

JQuery Event Wheel

License: The MIT License (MIT) Copyright (c) 2008, Three Dub Media (http://threedubmedia.com)

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

FlipV

License: The MIT License (MIT) Copyright (c) 2001 - 2009 Matteo Bicocchi (pupunzi), Open Lab

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

JQuery UI CheckBox

License: The MIT License (MIT) Copyright (c) 2009 Jeremy Lea <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Sida 102(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

JQuery Metadata

License: The MIT License (MIT) Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer, Paul McLanahan

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

JQuery LoadAnimation

License: The MIT License (MIT) Copyright (c) 2009 Jan Faessler

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

JQuery SelectToUISlider

License: The MIT License (MIT) Copyright (c) 2008 Filament Group, Inc

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 103(108)

Documentation

Agresso WebInfo 3.9

CodeMirror

License: Zlib Copyright (c) 2007-2009 Marijn Haverbeke

This software is provided 'as-is', without any express or implied

warranty. In no event will the authors be held liable for any

damages arising from the use of this software.

Permission is granted to anyone to use this software for any

purpose, including commercial applications, and to alter it and

redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must

not claim that you wrote the original software. If you use this

software in a product, an acknowledgment in the product

documentation would be appreciated but is not required.

2. Altered source versions must be plainly marked as such, and must

not be misrepresented as being the original software.

3. This notice may not be removed or altered from any source

distribution.

Marijn Haverbeke

marijnh at gmail

EditArea

License: BSD Copyright (c) 2008, Christophe Dolivet

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or

other materials provided with the distribution.

* Neither the name of EditArea nor the names of its contributors may be used to endorse or promote products derived from this software without specific

prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT

NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE

COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

JSON

License: Special Copyright (c) 2002 JSON.org

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in

the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the

Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

The Software shall be used for Good, not Evil.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN

CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Sida 104(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

GhostText

License: The MIT License (MIT) Copyright (c) 2009 Jon Rohan (http://dinnermint.org)

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

JQuery Throttle/Debounce

License: The MIT License (MIT) Copyright (c) 2010 "Cowboy" Ben Alman

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

JQuery BgiFrame

License: The MIT License (MIT) Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 105(108)

Documentation

Agresso WebInfo 3.9

Css Browser Selector

License: CC2.5 http://creativecommons.org/licenses/by/2.5/ By: Rafael Lima (http://rafael.adm.br)

Contributors: http://rafael.adm.br/css_browser_selector#contributors

Css Friendly

License: CC2.5 http://creativecommons.org/licenses/by/2.5/ Microsoft Permissive License (Ms-PL)

Published: October 12, 2006

This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the

software.

1. Definitions

The terms “reproduce,” “reproduction,” “derivative works,” and “distribution” have the same meaning here as under U.S. copyright law.

A “contribution” is the original software, or any additions or changes to the software.

A “contributor” is any person that distributes its contribution under this license.

“Licensed patents” are a contributor’s patent claims that read directly on its contribution.

2. Grant of Rights

(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-

exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or

any derivative works that you create.

(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive,

worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in

the software or derivative works of the contribution in the software.

3. Conditions and Limitations

(A) No Trademark License- This license does not grant you rights to use any contributors’ name, logo, or trademarks.

(B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to

the software ends automatically.

(C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.

(D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with

your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this

license.

(E) The software is licensed “as-is.” You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have

additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the

contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.

SQLite

License: Public Domain

IE Png Alpha Fix

License: CC-GNU LGPL http://creativecommons.org/licenses/LGPL/2.1/ (c) 2004-2005 Angus Turnbull http://www.twinhelix.com

Sida 106(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

TheDHTML Calendar

License: LGPL

GNU LESSER GENERAL PUBLIC LICENSE

Version 3, 29 June 2007

Copyright © 2007 Free Software Foundation, Inc. <http://fsf.org/>

Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.This version of the GNU Lesser General Public License

incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below.

0. Additional Definitions.

As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License.

“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below.

An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the

Library is deemed a mode of using an interface provided by the Library.

A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also

called the “Linked Version”.

The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work

that, considered in isolation, are based on the Application, and not on the Linked Version.

The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for

reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work.

1. Exception to Section 3 of the GNU GPL.

You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL.

2. Conveying Modified Versions.

If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument

passed when the facility is invoked), then you may convey a copy of the modified version:

a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still

operates, and performs whatever part of its purpose remains meaningful, or

b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy.

3. Object Code Incorporating Material from Library Header Files.

The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided

that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in

length), you do both of the following:

a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License.

b) Accompany the object code with a copy of the GNU GPL and this license document.

4. Combined Works.

You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined

Work and reverse engineering for debugging such modifications, if you also do each of the following:

a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License.

b) Accompany the Combined Work with a copy of the GNU GPL and this license document.

c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference

directing the user to the copies of the GNU GPL and this license document.

d) Do one of the following:

0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and

under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner

specified by section 6 of the GNU GPL for conveying Corresponding Source.

1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library

already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.

e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent

that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version

of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use

option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.)

5. Combined Libraries.

You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by

this License, and convey such a combined library under terms of your choice, if you do both of the following:

a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of

this License.

b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form

of the same work.

6. Revised Versions of the GNU Lesser General Public License.

The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the

present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later

version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If

the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever

published by the Free Software Foundation.

If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of

acceptance of any version is permanent authorization for you to choose that version for the Library.

WebInfo 3.9 - Documentation.doc 2013-06-10 Sida 107(108)

Documentation

Agresso WebInfo 3.9

YUI

License: BSD Copyright (c) 2010, Yahoo! Inc.

All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or

other materials provided with the distribution.

* Neither the name of EditArea nor the names of its contributors may be used to endorse or promote products derived from this software without specific

prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT

NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE

COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Mb.ContainerPlus

License: The MIT License (MIT) Copyright (c) 2009 Matteo Bicocchi

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Hash Handler

License: The MIT License (MIT) Copyright (c) 2009 Andreas Blixt <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Sida 108(108) 2013-06-10 WebInfo 3.9 - Documentation.doc

Documentation

Agresso WebInfo 3.9

JQuery Hash Plugin

License: The MIT License (MIT) Copyright (c) 2009 Andreas Blixt <[email protected]>

Permission is hereby granted, free of charge, to any person obtaining

a copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The above copyright notice and this permission notice shall be

included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

HTMLEncode

License: Special Copyright (c) 2006 Thomas Peri, http://www.tumuski.com/

Permission is hereby granted, free of charge, to any person obtaining a

copy of this software and associated documentation files (the

"Software"), to deal in the Software without restriction, including

without limitation the rights to use, copy, modify, merge, publish,

distribute, sublicense, and/or sell copies of the Software, and to

permit persons to whom the Software is furnished to do so, subject to

the following conditions:

The Software shall be used for Good, not Evil.

The above copyright notice and this permission notice shall be included

in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS

OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY

CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,

TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE

SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.