# Reference Manual

You are reading the english version of the document.
La versione italiana è Manuale di riferimento

## Introduction

Copyright (c) 2007-2010 Marcello Verona <marcelloverona@gmail.com>

Permission is granted to copy, distribute and / or modify this document under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled "GNU Free Documentation License ".


VFront is a software released under the GPL 2.0 For more information on licensing, see the LICENSE file distributed with this documentation or on http://www.gnu.org/copyleft/gpl.html

### Who should take this software

VFront is a front-end web based database MySQL or PostgreSQL.

• It may be useful to institutions or organizations that use MySQL or PostgreSQL and should make their employees access to databases for consultation, inserting or modifying data, without an ad-hoc and client by using a simple web browser.
• VFront can be thought of as an interface tool for database, and perform some functions such as MS Access, with the advantage of being accessible directly from the browser.It is not a database administration tool like phpMyAdmin, or replacing it: interface is addressed to the user base that operates on the data.
• VFront interface is designed so for non-expert users, who can operate on data securely with a familiar interface and intuitive.
• VFront is particularly useful when different users or types of users must access tables with different privileges, thanks to the highly customizable and group rights is possible to access various groups of users to specific tables or views, show or hide fields to specific groups Set rules for input validation and control activity on the database.
• VFront also has modules export data, statistics and management reporting based on XML, XSL and XSL-FO.
• The application then can be useful to those who, generally, needs a front-end database installed and running with little effort quickly.

### The roles on VFront in organizations / organizations

On VFront rights are defined by the group and the level of government.

Are three levels of government. Roles are described herein with specific reference to the institution or organization where VFront is used:

#### Level 3: Managing

Job description:

Skills and knowledge:

• Knows the database MySQL or PostgreSQL is VFront in front-end
• Familiar with SQL language
• E 'skills in managing the filesystem of the server that VFront is installed (Linux server or other)
• Sa edit a configuration file written in PHP can access and write to that file.
• Knows, at least superficially, XML, XSL-FO el'XSL and / or makes use of an employee / colleague who knows these languages, useful for defining the customized reports.
• VFront full knowledge of the application and is in contact with people who use VFront.

Duties and responsibilities:

• Create VFront groups and their rights, defines the types of fields in tables, forms, and configures the sub-masks of tables and views, making the design choices
• Can access the log for rescue deleted data.
• Depending on the size of the working group may be related to the only users of level 2.
• May be responsible for allocating user rights of a lower level, although this privilege may be delegated to Level 2.
• Defines the query to generate reports in tabular and graphical statistics section.
• Can define reports and, if familiar with XSL transformations can be defined and XSL-FO style sheets to generate custom reports.

Identification with the role in the entity / organization:

May be a system or DB administrator of the institution / organization.

#### Level 2 (local administrator or tutor):

Job description:

Skills and knowledge:

• Level 2 has certain powers of administration.This is an advanced user with knowledge (at least) based on databases and on the structure of the database is VFront front-end.

Duties and responsibilities:

• Attributes the group membership for users of the basic level (Level 1)
• Can promote users to level 1 to level 2
• You can review statistics and (if you know the SQL language) can create new ones.
• Can handle the reporting

Identification with the role in the entity / organization:

It can be a referent of the project entity / organization or an experienced user with a mandate to manage the team.

#### Level 1 (user base):

Job description:

Skills and knowledge:

• It requires a basic knowledge of the functioning of the database, at least for the tables that relate to your group.May be helpful if this user has followed a day of training on the operation of the database and functions VFront on the use of masks and sub-masks.

Duties and responsibilities:

• Can be any employee of the institution / organization should / can access the data.
• According to the rights attributed to him may enter, edit, delete and search the data.

Identification with the role in the entity / organization:

May be an employee of any role / framework that should / can access the data.

### The three laws of VFront

Stealing the form of the title of this section by Asimov, are here set out the general principles by which we tried to develop VFront:

1. VFront not mess up your database, will not create additional tables and views on your DB and will not change data in tables, unless you explicitly want to do through masks. Instead will create its own discrete database of rules (or a schema on PostgreSQL). Does not take possession of your database, but allows you to use it.
2. VFront not to bypass rules that have been set in your database. With VFront you can create new constraints stricter than those on the database you created (in terms of foreign keys, acceptable types of input fields, etc..) But never the opposite.
3. VFront work better because it has been more rigorous definition of your database. A VFront like normalization, foreign keys, primary keys can number, comments on tables and fields, etc ... Garbage in, garbage out: you can not escape.

## System Features

### Server-side technologies

VFront is a web server with the following characteristics:

• Written in PHP 5 as a scripting language
• Can be applied to MySQL 5.x PostgreSQL 8.x.If you use MySQL you will create a database of rules for the application on the same server as the database you want to use. If the PostgreSQL database is used instead of rules is created as a PostgreSQL database schema that you want to use.
• VFront works with Apache 2.x.Probably you can also use the 1.x version of Apache, if that is possible to use PHP 5.
• VFront is designed to run under Linux-like, but you can also use it in Windows.

### Technology Client Side

VFront makes great use of Javascript. You can not use VFront without javascript enabled: it is completely lifeless and spend the same as the difference between a piece of wood and Pinocchio (then, as someone noted, it follows that Pinocchio is written in Javascript ;-).

However, efforts have been made to ensure that the application works correctly with different browsers: Browsers currently tested successfully to date are:

• Internet Explorer 5.5
• Internet Explorer 6
• Internet Explorer 7
• Internet Explorer 8
• Firefox 1.5.x
• Firefox 2.0
• Firefox 3.x
• Mozilla 1.8

Partially supported browsers are:

• Internet Explorer 5.0
• Opera 8:51
• Safari

Support for Safari not yet been tested. At present we recommend Mac users to use VFront with Firefox.

### Basic structure of the directories

The directory structure VFront is so composed:

ROOT_VFRONT
_docs
_install
conf
files
- docs
- html
- tmp
- xsl_custom
img
- mime
inc
local
js
- dhtmlxgrid
- jscalendar
- scriptaculous
- yav
plugins
- fckeditor
- highlight
- phpgettext
- phpmailer
- ods
- ttf
stats
themes
sty
- Jscalendar
usr
xml


### Description of the folders and rights

Some folders should be attributed to Apache for the specific files and its subfolders. For more information see Manual installation guide.

Folders with the underscore in front are not critical for the functioning of the application:

_DOCS
contains documentation
_INSTALL
contains the installation procedures. It is advised that you delete the folder _INSTALL after installation.
contains the scripts for the area of administration.
CONF
contains the configuration file. Can be a good idea to move it outside the area subjected to browsing. If you do this you should edit the connection file inc / conn.php. Read the Manual installation guide if you want to do this.
FILES
contains attachments that are generated when you enable the use of attachments for the tables. Attachments are saved as n.dat here, where n is the value of fuck table's primary attachment. It also contains all subdirectories writable by Apache: subfolders of files are docs, documentation staff; DOCSADMIN for official documents, HTML is the folder where they are stored in HTML files which contain the "tendon" with field values of type "select_from", useful for optimizing performance of VFront (see setting the fields for more information); for some TMP operations VFront; XLS_CUSTOM where the file is saved XSL and XSL-FO personal information (see the section on the Report).
IMG
application contains the images (icons, wallpapers, etc.).
INC
include file contains the script, as other features and much more.
JS
Javascript script contains several folders and frameworks developed by third parties.
PLUGINS
contains some scripts, such as files used to generate Open Document (folder ODS) and FCKEditor application contains the same name, used optionally for the fields of text "richtext".
THEMES
is the folder where the themes are stored graphs VFront
STATS
contains the scripts for the statistics.
STY
is the folder that contains the CSS style sheets.
USR
is an empty folder, it may be useful for personal scripts for those who want to add functions VFront.
XML
contains script for XML and XSL transformations.

## Architecture Overview

### The logic of the front-end VFront

VFront works through a system of rules or "registers of rules" that mediates between the user interface and database data. This system allows you to configure rules for access to tables, views, and individual fields, using special formatting constraints and configurable by the administrator via a special interface.

You can set fields with research, required fields, type of input for the single field and more in a personalized manner for each group for an indefinite number of groups. Note also that all rules are written in a separate database from that data, so as not to interfere in any way with the structure of the latter.

We refer to the two database called DB data (the database which will VFront front-end) and DB or DB rules VFront.

### System registers

VFront, in other words, it allows you to create another system of control over data in addition to those normally set up by a relational database like MySQL 5 and PostgreSQL 8, with the added level of customization to the user group.

Each user is added to one and only one group and each group there is a system of rules. It will be possible, for example, show some tables in read-only for a group of users for reading and writing to another, reading, writing and erasing to a third party, or show a set of tables reduced fourth group.

The user who accesses the system will interface with different functions depending on different tables belonging to a group with more or less rights.E 'can also set individual fields of the tables and sub-masks visible to the needs of different user groups.

### Schema entity / relationship database VFront

And here the main scheme rules database (DB VFront):

Entity Relationship Diagram

allegato
This table records the information on the files attached to tables. The files are saved in database but in the filesystem. In the database (in this table) are recorded only information about the link of the file to the record and the table, the name of the file and other service information.
gruppo
table where they are registered and described the groups with access to front-end.
table where they recorded information on the links to records of related tables
log
In table log records all the operations INSERT, UPDATE and DELETE statements that are executed on the database data. The table also allows log records with a historic opportunity to restore data amended or erased by mistake, even after urinary physics given by the disc. See the chapter about "Log and Recovery Data."
recordLock
this is a table that allows the recording of changes in access to database records data in order to prevent laccesso competitor alteration to existing records are modified by another user.
registro_tab
Included here are general rules for each table, for each group. The table in a first configuration of the front-end reads information_schema MySQL 5 and configures a first group by default. This table records the access rights of the individual tables for the single group in SELECT, INSERT, UPDATE, DELETE, and the exportable data in the table.
registro_col
Table registro_tab daughter and connected to it through foreign key field id_table, this table documents the fields of the tables set for each group. I'm here configured the display options for individual fields, the type of input, the fact that fields are mandatory or not, etcetera.
Connected to the table by foreign key field registro_tab id_table, registro_submask contains information on the sub-forms for each table, for each group.
stat
recorded here are the queries and other information for the custom statistics.
utente
user are entered here and users connect via foreign key (gid field) to the table group
variabili
In this table are registered trademarks of environment variables. These can be general (for all lambiente VFront) or specific to a group. In the case of coexistence of two types of variables, specific for the group has priority over the generic. See the chapter #Variables for details.
xml_rules
This table records the information for the generation of reports.

### Authentication system

 The authentication process is described in detail even in the Manual installation guide

Accessing VFront is through authentication and accreditation of rights in separate steps. This means that authentication can use external tools (such as LDAP or other database), while the accreditation of rights is always done by querying the database of rules VFront (user table).

You can authenticate the users

• through the database VFront (authentication and accreditation coincide) - authentication to "1 step"
• via LDAP or Active Directory server
• by the use of a table in a database on the same server (only if you use MySQL)
• by the use of a table in a database present on another server.In this case the reading is supported databases MySQL, PostgreSQL, or through ODBC.

All methods except the first are methods "2 step" that is, authentication and accreditation are separate processes.

The illustration shows the authentication process in step 2.

As shown in the figure, the procedure is as follows: the user tries to authenticate to VFront through email and password.

1. The chosen instrument is queried for authentication (LDAP, a database table, etc..), If the user does not exist is rejected with a message on screen if the user exists on the database is searched for the rules (DB VFront) .
2. If there are read the user login credentials (group membership and level of administration) and recorded in the session.
3. However, if the user does not exist, it is automatically recorded in the database, because his account exists in the instrument of authentication (LDAP, another DB, etc.) so it can access the system.
4. He will be attributed, however, the minimum rights, which will be allocated to the group 0 (default group, for which you want to set read-only rights) and no level of government.

Will subsequently be the responsibility of directors to "promote" the user and / or assigning the correct group.

### Translation Interface

VFront uses the standard gettext for translations of the PHP code. Uses it in two ways possible:

1. Native mode, ie by extending php_gettext. To use this mode, see the reference documentation on php http://it.php.net/manual/en/ref.gettext.php
2. Methods interpreted by the library phpgettext, present in the plugins

VFront using one or the other mode automatically: if there is native mode, this will be used primarily (occasionally with best performance), otherwise we will use the rules interpreted.

#### Translation of strings javascript

As regards the translation of the javascript code, or user-generated messages on the client side, it is now used for a system of functions similar to gettext, but with a different interpretation.

In the javascript code messages are sent through the standard gettext function, ie, _.For example in the code you can find the message _ ( 'Warning') which is interpreted by a file that is inside the directory js / lang / en.js-vfront and is called in the case of English, vfront-fr. js in the case of French, etc..

This system is experimental and may in future use a different system (perhaps more standardized).

#### Setting the language

To set up a new language is necessary to set the constant FRONT_LANG in the configuration file. For further information we suggest reading the installation guide.

#### The creation of a new translation

To create a new translation is necessary to use the files. Little present in the local directory /. There is also a model (messages.pot) that you can use to create a new translation.

You must then create a new directory inside the local LC_MESSAGES subdirectory and copy your generated file (. Po and. Mo) inside it. The translation files have names and messages.po messages.mo.

For more information see the class directory of languages present. The translation of the javascript function instead of using the files in js / lang /. Take for example the vfront-en.js file as a template.

## User form

The user form is the heart of VFront. Through this mask that are read, inserted, modified and deleted records. The operation of the card user is documented in the user guide for user. This document will set out the technical details. For documentation please refer to the reading given to the use of the above document.

The card user is in fact a single script with many parameters to load the settings for each table from the register of rules based on the group with which you are logged. May be a page rather heavy, especially when configured with many drop-down related to foreign keys (see the administration of the camps for details). On the other hand is loaded once for each table. Indeed scrolling through the records, either by calling asynchronous XML browser technology known as AJAX (Asynchronous JavaScript and XML).

In practice when you advance to a record page is not reloaded as in most applications, web design classic, but a call is sent to the server hidden via Javascript.

The server responds by sending (always silently) the details of the next record in XML format, which is read by the browser. At this point the content will populate the boxes prepared.

Even the handling of records is done in the same way, with the advantage of optimizing the transaction server / client limited to what is necessary. For example if you wanted to edit a record in a hypothetical table "news" and you make only one change to the title through AJAX calls do not also send a description, date, and the values of all other fields, but only the value changed, that is the new title. In this way the number of bytes sent in each transaction is optimized.

Masks in the records are sorted by a field set by the administrator (see below the section of administration).

Navigation between records is possible in two ways. The most immediate is through the navigation buttons present in the mask (see Figure 3). E 'can, however, jump directly to a record by double clicking on the counter. This will turn into a text box where you can write the number of records to which you want to jump and confirm with the Enter key. The box that appears with the double click also offers a useful function for the hidden administration. If you know the ID of the record (the code number primary key) you can write eg id:418 and 418° not to miss record, but the record of 418 ID of the table in question.

### Creating, editing and deleting records

If you have the right to create, edit and delete records in the table under consideration, the buttons appear on the creation of records (New), modification (change) and elimination.

As for the change is possible that the system does not allow for editing a particular record if any other person is already working on the same changes. Then there is an explicit message. The time for which a record remains blocked depends on a parameter set number of seconds in the table variables. By default, this parameter was set to 240 seconds (4 minutes) but you can change to the administrator. Of course if the user is editing the record were to press "Cancel" or "Save" the record would be released even if they have passed the 240 seconds.

Regarding the disposal of records can occur that show an error message if the user tries to delete a record with child records, which are present in sub-masks. In this case you must delete all child records from sub-masks first and then the record from the mask.

### View tab and view table

From the view tab, you can switch to the table, which shows a number of records defined in the variables (see section Variables). The record shows the default value is 20. Double click on a record you can switch to the tab clicked on the record.

### The research

The research is a real "query by form". When you click on the search fields on the form empty and turn green. You can write and send the search parameters. In this way are searched for records that meet the requirements incorporated. Note that the search is made for equality, not affinity (operator '=', no operator 'LIKE') and that research works through logical AND (not OR).

If the result is only one mask will show the records sought, though several will show the results in the view table. E 'can ultimately help the search with the fields with suggestions, imposed by the table. In this case as you type suggestions will appear in a field.

Auto completion in research

This can be useful in areas of significant texts and can be set by the fields of the table.

#### Finding a substring

E 'can use the asterisk to find records mode LIKE. For example if you search a list of names "Ross *" VFront return all last names that begin with "Ross" (Rossi, Rossini, Rossetti, Rossomalpelo, etc.).

### The keyboard shortcut

For use of VFront faster and more productively (especially in case of data entry) may be useful to know the keyboard shortcuts masks VFront. When properly configured in the variables (see the section #System variables), you can see at any moment the keyboard shortcuts of the form by clicking on the tab on the right of the screen.

Navigating records:

CTRL + right arrow
ahead of a record (corresponding to the key ">")
CTRL + left arrow
back of a record (corresponding to the key "<")
Ctrl + Shift + left arrow
fast forward through the records (corresponding to the key ">>")
Ctrl + Shift + left arrow
rewind through the records (corresponding to the key "<<")
CTRL + Up
Go to the first record (corresponding to the key "| <")
CTRL + down
Go to the last record (corresponds to the key "> |")

Operations on the form:

CTRL + ALT + N
New record
CTRL + ALT + M
Edit record
CTRL + ALT + A
Cancel
CTRL + ALT + S
Save
CTRL + ALT + E
Delete
CTRL + ALT + R
Search
CTRL + Enter
(in Search Mode) Send search

CTRL + ALT + G
Open attachments (if present in the mask)
CTRL + ALT + L

 Please note: In fact, all operations CTRL + ALT + key would have the same effect with ALT + key.The keyboard combinations CTRL + ALT were set not to overlap with the combinations already present on the browser: for example ALT + E (eliminates VFront, open the Bookmarks menu in Firefox). The problem is solved with the combination CTRL + ALT + key, with which are not activated keyboard commands specific to the browser.

## Introduction to the front-end

The administration menu is accessible for authorized users through the link in the top bar on the right.

The administration of the front-end is defined by an independent right to membership in a group.

The level of administration may be:

• Level 1 - user (no function of directors)
• Level 2 - local administrator or tutor

1. dump the database (DB DB rules and data)
2. The creation and administration of groups / register
3. The creation of other users and users superadmin tutor (level 2).
4. System variables and system testing
5. The graphics and layout impopstazioni

Both administrators (level 3) that the tutor (level 2) may instead operate on logs, and change the membership of users to groups. They may "promote" other users with their peers, that is a level 3 administrator can create a tutor (level 2) or administrator (level 3), while a tutor (level 2) may not create a director of Level 3 as would have a higher level than his own. Both the administrators (level 3) that the tutor (level 2) can create new reports XML, XHTML, PDF or RTF (the latter formed only in the presence of Apache FOP) may create statistics with graphs and tables.

## Administration of tables and views

### What are they and what are groups / logs on VFront

On VFront you can create groups of users that are records of rules on tables and fields: for example, you can create a group that can only access the table to table A and not B. E 'can create a group that can access and modify items in Table A, Table B for writing, editing and deletion and Table C in read-only. E 'can also display different fields of the tables to different groups (eg hide a field, and so on).

Each group has a system of rules entirely independent of the other group defined by the administrator.

### The system groups / registers in practice

As the card is the heart of VFront user side, the menu of the group recorded it is for the part of directors. When you access the Registry menu, appears a summary table with the records / groups present at the time. The link "Create new group" is just what you'd expect, with the ability to type a name for the new group, a description and clone the settings of another group. Cloning can be convenient to avoid having to reconfigure from scratch all the options for tables, but from a configuration template exists. Once you create the new group will be completely independent from the others, including the one from which it was cloned. Of course you can also create a group with no setting of departure: simply select from the dropdown cloning "creates a blank recordable. E 'possible to delete groups, except the default group. When you delete groups with users, they will be moved automatically to the default group.

From the HTML table that shows the groups shown in Figure 6 can be accessed through the link "Administration" to the most exciting features of the front-end. We have here the administration of database tables for the group examined. Please note that the logic of VFront the settings on the database tables for a group does not affect in any way the settings for the other groups. From this view you can get a picture of the situation: the tables identified by the blue links are those on which it was made a few changes, while the red ones are the ones without even setting by the administrator. And 'here can also have a quick overview of what tables are available in reading, writing, editing and deletion, and the number of sub-mask set. Tail are visible in the list views with their settings. The views created in the database on VFront appear and are treated in a manner similar to the tables themselves, except for some details that will be discussed in the section Setting the SQL View

Rules for the tables for a group (group 0 - "default")

Top left is a link instead "Features rapids" that allows to operate changes on all tables at once. E 'can sort the list of tables by clicking on the labels of the columns. To access the configuration of a table (for the group in question), simply click on its name.

### Setting General table

As in figure one can see that the administration of the tables for group work through a page with tabs. The first concerns the general settings tab (see Figure).

Settings for a table (contract) for the group 0 (default)

Here is set:

• The ordering of records.Can be set to one of the fields in the table in ascending or descending order.In nature to the system, it is strongly advised not to use fields that can be set to NULL for sorting. This would create a malfunction in the search functions.
• Right of reading, namely that the table is visible or not (SELECT).If the table is not legible, will not be displayed on the home page in the list of tables
• The right to insert new records (INSERT)
• If it is possible to insert new records will be shown the option of duplicating the record.
• The right to amend the record (UPDATE)
• The right to delete record (DELETE)
• The ability to export data in the table by the users of this group.
• The ability to import the data in the table by the users of this group.

To confirm the operation must explicitly click "Save settings general" (saving settings is not automatic).

E 'can also save the setting for all groups in the registry.

Note that by default are denied all rights to all tables for all groups. It will be up to the administrator to give different groups the rights which they compete.

As you can see from the figure above there are additional settings in the "Attachments and links. Through VFront is indeed possible to connect to any table of attachments and links. These will then be displayed in the user card. And 'here you can configure the ability to read, write and delete attachments and links to the table in question for this group.

### Setting the field

The second tab of the administration is setting the table for the group of fields.

For each field you can set

field visible (yes | no)

If you choose "no" the field does not appear on the card

required field

as suggested by the words, requires the employee to fill the field. Otherwise, a message "Alert" advise that it is impossible to save the input or editing.

tax tips

allows to show, as he writes in a field, a list of values already present (Autocompleter). It 'very useful to some areas for research (such as titles or names). Shown in the table view will display the field in the view table (regardless of the view tab).

As seen in the figure, the first field appears with the yellow keys: this means that the field is a primary key (primary key).In this case, if the field is numeric, the default will not be shown on the form. It can be shown instead in the view table. The second field of the figure is blue instead of the keys: it means that it is a foreign key (foreign key). In this case, almost always will be useful to set the field with a type "values defined by the table" (see below for details).

Setting fields on a table

As regards the types of input, depending on the type of field are only possible settings. In general, the policy VFront is to be able to set more restrictive rules in the database, and not vice versa (see the The three laws of VFront. This means that, for example, if a field is set in the database as numeric, the front-end will not set it as text. In the case of long text but you can set from the field as text VFront short or long text. Depending on the choices made in this form of administration can determine how the group will see the tab for the table in question.

The following are the types of inputs for the main types of fields, according to the definition of the SQL database. For every case is reported as the field will be displayed in HTML forms:

number
(INTEGER, [MEDIUMINT, bigint, etc]) type proposed by VFront: integer
• shows an HTML input field of type "text" short
number with commas
(Float [DOUBLE, DECIMAL]) type proposed by VFront: number with commas
* shows an HTML input field of type "text"
Boolean
(In MySQL TINYINT (1) or BOOL in PostgreSQL) type proposed by VFront: Boolean true | false
• shows a checkbox
text
(VARCHAR [CHAR, etc]) type proposed by VFront: free text Short, password
• if "free text short" shows an HTML input field of type "text" long
• if "password" is to show asterisks (HTML field type password).Note! At present the passwords are automatically converted into MD5 hash
Long Text
(TEXT, OR MEDIUMTEXT LONGTEXT) type proposed by VFront: long text, short text, HTML formatted text
• if "free text short" shows an HTML input field of type "text" long
• in case "long text" shows an HTML input field of type "textarea"
• if HTML formatted text is displayed (instead of the text), an instance of open source editor FCKeditor http://www.fckeditor.net/.
date and time
(DATETIME or TIMESTAMP) type proposed by VFront: date and time formatted formatted date
• shows a text field.When you click on the field will open a popup calendar - possibly even the hour)
date
(DATE) type proposed by VFront: formatted date (with help of a popup calendar)
• shows a text field.When you click on the field will open a popup calendar - possibly even the hour)
eval (only MySQL)
(EVAL) type proposed by VFront: pulldown menu
• shows a drop down menu with valoli possible, as set in the database.

Finally, there are always four types of fields are very important, typical of front-end:

#### Hidden Field

Indicates a hidden value that can be a constant or a variable.

For example, if you write "1" field will become the value 1. If you use the value  %now, will automatically take the field today.

The variables available are described in a popup and keywords are preceded by the sign  % (Percent):

%nick
Nickname of the user who logged
%email
Email user who has logged
%uid
id of user who has logged
%nome
Name of the user who logged
%cognome
Last name of the user who logged
%nomecognome
Full name (space separated) of the user who logged
%cognomenome
Full name (space separated) of the user who logged
%gid
Numerical identifier of the group that owns the user who logged
%gruppo
Name of the group that owns the user who logged
%now
Current date in yyyy-mm-dd
%timestamp
Current date and time in yyyy-mm-dd HH:mm:ss

The hidden fields can be active only in the insertion of the record (default) or being edited. A checkbox proposes the use of the hidden field in the event of changes. If you set this field will be automatically updated whenever you change the record in question. In the example of today's date (variable  % now), if the box was checked, the date will be updated to the last modification date of the record, otherwise it would be shown only the date of creation.

#### defined values

With this type of input you can enter a list of default values. Tab will appear as a drop-down menu. E 'possible to insert values (one per line). The HTML output will be a dropdown with the values and labels equal to the values entered. E 'can also insert coupled value => label. A pop-up guide the administrator to correct syntax.

#### Values defined by the table.

And 'maybe this is the most important type of input. It allows you to display the coded values from another table, fundamental option 1 to many relationships. For example in the figure above, in the field codiceComune (numeric) is set up a link to the table "common" through a SQL query. The result is a drop down menu that will have as its value codiceComune numbers but as a label visible to the user the names of the municipalities shown in the clear. This feature is especially useful in the case of fields that are also foreign key (marked in blue in the front-end).

You need to invoke two fields in SQL query The code and description.

You can write the query manually or use the pop-up "visual Query Editor". E 'possible to write queries by hand even with the use of WHERE and JOIN functions CONCAT (for MySQL or the concatenation operator "| |" in PostgreSQL) and the like. E 'possible, for security reasons, write only SELECT queries. And 'finally can test with the "test" the correctness of their queries. Once you set the fields you need to save the settings with the "Save" button at the bottom of the page.

In this case the value is displayed as HTML text, but without any possibility of change.

#### The control over the value of the fields

A function that may prove useful is the control on the input for the single field.

In order to use the controls you need to set the menu [#https://sourceforge.net/apps/mediawiki/vfront/index.php?title=Manuale_di_riferimento variables] variable js_test Yes.

In that case next to each box for setting a field you'll see a link "Advanced Controls" that opens a popup. From here you can set a constraint on the input required for the single field (note that the setting will be valid for the table view from the group on which you are working).

Depending on the type of data in question are shown in drop down a series of constraints different.

Are outlined here where provided:

int:

• integer (a number with no comma)
• other than (number to be different from what you entered as input by the user)
• numeric range (an interval of two numbers without commas)
• integer n. figures: (a number that indicates the number of digits required)

varchar (or char, or text or MEDIUMTEXT)

• alphabetically (letters a through z, uppercase or lowercase, no spaces)
• Alphanumeric (letters a through z, upper or lower case letters and numbers without spaces)
• dash-alphanumeric (letters a through z, upper or lower case letters and numbers, "-" character and character "_" without spaces)
• Alphanumeric with hyphens and spaces (letters a through z, upper or lower case letters and numbers, "-" character and character "_" with spaces)
• email (email formally valid)
• different from (different character string from an input defined)
• maximum length (number of characters maximum)
• minimum length (number of characters minimum)
• regular expression (regular expression like Pearl: This is a very powerful instrument of control on the input.For those who know how to write ...)
• No text exactly characters: (exact number of characters required)
• Partita IVA (Italian VAT formally correct)
• tax code (tax code Italian formally correct)

Type Date

• formatted date (date in yyyy:mm:dd)
• earlier or equal to (a date that is earlier or equal to user)
• date later than or equal to (a date that is later than or equal to user)

type time

• Formatted time (with the format hh:mm:ss)
• Formatted time (with the format hh:mm)

type double (or float)

• numeric comma (number that does not necessarily need the comma)
• integer (whole number)
• numeric range (an interval of two numbers with or without a comma)
• number with no decimal point with exactly figures: (a number that indicates the number of digits required)

As can be set, the advanced controls can be removed at any time.

Note that the advanced controls operate both during insertion of new records, both in case of modification of existing records.

When a field has been set a control, the link "Advanced Controls" is shown in bold and shows the type of control is currently active.

### The ordering of fields in forms

Sorting fields

E 'can choose to show the fields in the table with a different order from those in the definition of the database. To change the ordering of fields is enough to go on the tab field order. From here you can, with a simple drag & drop, move the order of presentation of the fields (see figure below). A confirmation message will warn the transaction occurred. To restore the default order click the button Restore Default ordering.

### Managing relationships one to many and many to many: the sub-masks

To manage the relationship "one to many" and "many to many" VFront suggests the instrument of sub-masks.

[[Image:]]

[[Image:]]

A sub-form in detail

In other words, whenever, for a record in a table, there are many child records can be useful to use sub-forms. For the user sub-masks are visible from the view box with a card with the white button (see Figure) in which is written in brackets and in bold the number of child records to parent records in question.

To set the sub-masks will be from the administration menu option "Set Table" tab under Setting-masks. " At first, the tables do not have sub-masks. To generate a sub-form click on the link "New sub-masks." At this point you can add one or more tables to be set as sub-mask of the table in question. The table in question will be the parent table, while / the table / and which are chosen as sub-forms will be considered child tables.

The approach of the sub-masks is similar to table settings, with some differences (see figure). E 'must first define the general settings.

Table subform

To do this click on the name of a subform.

'll Then see a completely general approach, similar to that already seen in the general settings of the table. From here you can define the rights to use the subform, (reading, writing, editing, etc..). There are also a lot of options and important features of the subforms. Are highlighted by arrows in the figure.

1. Relation between tables.And 'This approach is more important than a subform in that it establishes the connection between the table and the subform. Are shown here in two tendon fields of the parent table ( "bank" and "bancaagenzia" in the example in figure). From here you define the connection between the parent table and child table. If foreign keys are defined in the database, VFront automatically suggest which fields to use as a shortcut.
2. Name of the subform can be called a descriptive name for the subform.Should not be used to define the table name as present in the database.
3. How to display data.The data in the subform can be viewed in tabular form or as a card. When the subform has one or two fields may be useful tabular view, otherwise the view tab is more suitable.
4. Maximum number of records for the subform.Here you can set a maximum number of records to display (and enter) in the subform. Since many records involving a data transaction server / client more and more waiting time for loading the subform, you may want to control the number defined here (lowest possible). A reasonable number can be between 5 and 50 record.

#### Settings for the fields of subforms

After defining the general settings and save them with the appropriate key, you can define the settings for the fields in subforms.

The definitions of the fields is not very different from that for the general tables, except for setting the field defined as a link between the tables (ie the foreign key). This field in fact (see the figure) will appear in the subform as a label identifying the record. Here you can define through the curtain highlighted by the rectangle in Fig. Here are the names of the fields in the main table.

The field is foreign key in a subform

The example in Figure has chosen the "bank" because it is a clear description of the bank that lends itself well to being a label readable and recognizable by the user. The result is shown in Figure

#### Practical examples for the definition of the relationship many to many and one to many

MANY TO MANY When you need to create an interface to manage a many to many is to create a subform by choosing the table normalization.

For example, consider the structure entity relationship EMPLOYEE 1 ->${\infty}$EMPLOYEE_RULE ${\infty}$<-1 RULE

In this case, the configuration of the table will generate the subform points to the table EMPLOYEE. Fields in the configuration of the reference all'ID_EMPLOYEE then be used as a label and generate a drop down menu #value defined by the table with the values in all possible positions, taking the values from RULE.

### Custom button creation

From version 0.95g VFront can create custom buttons

Section under development

Configuration of a custom button

Action of a custom button: The button opens a page (Wikipedia) with the parameter "name of the city" from the field nome_comune

### Setting the SQL View

VFront also manages SQL views (views) and treats them in a manner similar to tables. You can configure the views in terms of rules on the fields, ordering of fields and sub-masks in a completely homologous to the table. Unlike the tables you need to explicitly specify the primary key field (see figure).Views for the user, are displayed on the main page on the right (see figure). The administration views and quite similar to the tables for reading data. For the operations insert, modify and delete records VFront adapts to the policy of the database. For example in MySQL 5 you can enter and edit records, but you can use the DELETE on a view only if the definition of that there are no JOIN with other tables.

Settings DELETE in a view with MySQL5 Database

The application parses the view definition and therefore not automatically show or disposal options based on the presence of JOIN (see figure). For more information see for MySQL: http://dev.mysql.com/doc/refman/5.0/en/view- restrictions.html

For the management policies of the views on PostgreSQL, see the manual and use of RULES (for example, see [#http://www.postgresql.org/docs/8.2/interactive/rules-update.html http://www.postgresql.org/docs/8.2/interactive/rules-update.html # RULES-UPDATE - VIEWS.]

The views are recognizable in the administration and user card because they show the title in dark green and not red brick.

### Synchronizing tables / front-end

VFront allows you to synchronize their records with the rules of the database structure on which it is operating. These functions are very useful to be amended if the database structure. For example, if you add or remove a table or modify a database field, VFront is able to synchronize their rules with the modified structure.

 Note: According to [#https://sourceforge.net/apps/mediawiki/vfront/index.php?title=Manuale_di_riferimento general principles of VFront, each sync operation occurs between the DB and the DB data rules VFront, never vice versa!][#https://sourceforge.net/apps/mediawiki/vfront/index.php?title=Manuale_di_riferimento In other words VFront synchronize your DB rules to adhere to the structure of your DB data and do not ever alter the fields or tables in your DB data. ]

#### Adding new tables or views

When data is added in DB tables VFront is able to detect and include them in their books of rules. It 'important to keep in sync with the DB data VFront. To synchronize the database is sufficient to go on the menu Administration -> Synchronize database / front-end. Where is detected the presence of new tables or views will get a screen similar to the figure.

Synchronization: insertion of new tables.

Enough press the button "Show tables in the frontend" to add new tables or views.The new tables have no rights (either reading or other) default: after synchronization will be necessary to configure them for different groups to use them.

#### Removing Tables or Views

As for adding new tables or views, you can synchronize data with database tables VFront to eliminate obsolete. Page synchronization if it is found to contain obsolete tables show a screen similar to the figure.

Synchronization: removing obsolete table

Simply click on "Delete obsolete tables" to eliminate the registers VFront any reference to the tables (or views) are no longer present.

#### Changing the fields of the tables

It 'may be added, deleted or changed fields in the tables of the DB data. The script is able to detect changes and propose an automatic synchronization.

When fields are added or changed in one or more tables / views, shows a list of links in red. By accessing the detail you can see what differences exist between the synchronization fields VFront and the current state of the structure of the table.

Synchronization: updating fields in a table

The example in Figure shows the state of the table test_utente. Are assisted two tables: Table A shows the state dell'information_schema database, while Table B shows the current settings of VFront to upgrade. Example in figure MYEMAIL that changed the field from varchar (40) is now of type char (40).E 'was also added a field of type date from the name NUOVO_CAMPO.

As shown in Figure fields that show changes are highlighted in yellow.

From this screen you can synchronize by pressing the "Sync fields."

#### Manual reset

In special cases is possible to perform a manual reset of the rules of a table. To do this you can access the tab "Repair Manual" and from there choose which table to restore the rules. It 'worth noting that restoring deletes all the settings of the selected table for all groups. Since all the rewrite rules for a table for all groups can be a lengthy operation, it is suggested to use this feature with caution.

### Comment on the fields and tables

VFront using SQL comments fields and tables. If you have documented your comments database table and field, they will be used in different contexts:

• comments table will be visible on the home page of the application under the name (link to the form) of the table
• The comments of both fields will be displayed in the form of administration as "title" attribute for the field names in forms.In fact, masks, moving the mouse to the name of the field, the cursor will change to type "help" (the question mark) and if you have commented on the field will see the description of the field.

E 'therefore suggested to comment carefully your database, however, good practice in itself.

## User Management

As seen in paragraph Authentication system, users can access through authentication VFront on external tools such as LDAP SOAP or other databases. At first access users are registered in the user table of the DB VFront with government level 1 (no credential administration) and group membership 0 (default group). If the source of authentication is configured to transmit to VFront his name and surname, this data will be recorded and displayed. In order not to conflict with managing external user (via LDAP or other authentication sources), you can edit the users only if you choose to authenticate internal and external database or LDAP authentication.

User Management

For more information about authentication, see Authentication system or the section of the Manual installation guide on external authentication.

### The User table

User management is accessible from the menu on VFront Administration-> User Manager. From there is shown a table with users present on VFront and their characteristics:

ID
unique identifier in the table "user"
gruppo (group)
indicates the group to which the user belongs. The group membership determines the rights of use of tables. When a user logs on for the first time in VFront is inserted into the default group 0 - default.
livello (level)
nickname
email is used for authentication
cognome
last name
name
real name
insertion date
date of incorporation (or first access) on the user VFront
edit

allows the user to assign to another group or change the level of administration

Delete

you can delete the user from the DB VFront. If you set up authentication using external tools (LDAP, another DB, etc..) You will be recreated in its first access.

You can also filter users by group and sort the table according to one of the aforementioned matters.

Is possible also to export the data in table format XLS (MS Excel).

### Creating a user

 Please note: The creation of users is possible only if you choose the authentication method "internal" to VFront.If you are using LDAP as the authentication method or an external database, you can not add VFront by a user, but you must use the administration tools for LDAP or the database content.

### Amendments rights and attribution to a group

From user management you can change the credentials of a user. Clicking on "edit" you can

1. change the group membership of the user in question
3. its data access

These operations can be performed by 3-level administrators or managers (elsewhere also called tutors) to Level 2. The directors of Level 2 but will "encourage" users of level 1 to level 2 only, while the 3-level administrators can create other administrators to level 3 or level 2.

### Deleting a User

If you delete a user delete its data from the database. If you set the authentication directly from the database VFront, deleting the user will make it impossible to access the application on his part.

Conversely, if authentication is configured VFront (from the configuration file) using external authentication (LDAP, SOAP, another DB, etc..) You will be recreated next time you log on to his VFront with credentials basis, ie level Administration = 1 (no administration) and group 0 (default group).

## The system log and recovery operations

To access the menu of the Log you go Homo Administration and thence to link "Log operations on the database.

The system logs the front-end keeps track of all the operations INSERT, UPDATE and DELETE operations performed on tables in the database data. Is drawn:

• Date and time of the operation
• The type of operation (INSERT | UPDATE | DELETE | RESET)
• Author (name, surname and ID if present)
• The group of the author
• The source indicates which instrument was made by the process (for now always "m" which is about to form.In future they will also draw operations relating to sub-masks)
• ID and the table on which the operation was carried

Operations are shown with different colors depending on the type, as shown in figure.

You can filter the rows of the log in order to more easily find what you're looking for.

Filter (which is activated by clicking on the link "filter on the log") lets you search for signs of a transaction according to several parameters:

• Operation type
• Table
• User
• Date (or date range)

This makes it very easy to find the record accidentally deleted or modified by the user "Ciccio pie" between yesterday and today.

### The detail of the log

Drawn from each transaction log can be analyzed in detail. Clicking the Details link (see figure) you can get more information about the operation performed. When changes vine shown a table illustrating the fields of the table in the condition before and after the operations. Edited fields are highlighted in yellow. Also shows the possible reversibility of the operation (see Figure 19).

### The restoration

VFront allows some interesting repair functions. In the case of accidentally deleted or modified records incorrectly, you can restore the previous condition. To do this you must open the details of the transaction and if VFront-reversible operation, you can restore the previous state.

Example in figure, shows the log for an editing operation. The table in question (test_utente) has only three fields (id_ut, the primary key; myemail, a text box and password, a text field set to VFront as MD5 hashed password (if you want to try to do reverse engineering of my password, Know it is time lost, is not that of my online banking). In the case presented has changed the contents of the field MYEMAIL. To restore operation, simply click on the button "Restore this operation" and the contents of the field myemail become again "marcello@casa.com.

#### FAQ on the restoration for the more curious

What does "VFront considered reversible if the operation"?

VFront is a program with free will and will not choose what to restore or not  ;-) There is a transaction log restore if the data are integrated.</nowiki>So in terms of correct operation, every change and cancellation theory can be restored. If you did a cleaning of the log table too often the data may not be recoverable. The log table in fact can become very heavy, especially if the database is an intense activity on the data. The DB administrator might consider deleting log records in the table relating to operations (for example) are older than three months.

How does the system restore?

VFront not duplicate records to keep the historian. This contradicts what is said in paragraph the three laws of VFront as it would generate redundancy data on the database that VFront are reading. The restoration work instead by writing to the log records in the table of some SQL operations. They saved the contents of the fields before and after as an array serialized or SQL statement. If you're still curious, go and see the contents of the fields log.storico_pre and log.storico_post.

I don't want logs

Why? The logs do not interfere with normal activities on the charts, imply a negligible use of resources and can be very useful. But if its not I believe you can disable in the configuration file. Read the "Guide" to understand how.

### The historical record

The log can finally show the historical record. Click on "historic" (see figure) leads to a page that shows all transactions that have taken place on record their entry, changes, deletions and any restores . Of course, the historian is detailed only if such operations were carried out using masks VFront. The application in fact has no way of tracking transactions that have been made through other interfaces to database data (such as shell scripts, or operations to phpMyAdmin, for example).

## Report

 Reports on VFront are under experimental development, this section could be amended in the future.Some features are still potentially useful in the design phase and will be implemented soon.

### Creating a report on VFront

VFront can generate reports on the contents of tables. E 'can also generate reports from SQL queries. Reports on VFront are based on XML and the formats that are generated are derived from XML. To create a report to be accessed from the administration menu page of the report (link XML Administration and reporting). Here is a table with the reports that are currently present and two links Create new XML report from the table or view and create a new report from the query.

#### The logic of the report on VFront

The report VFront are based on XML, which can be displayed as is or used to generari other formats (see Figure 23). The XML files themselves are generated via two methods for querying the database: by reading the data in tables and rules set to VFront or through ad hoc queries written by the administrator.

The XML file can be transformed through two main processes:

1. Through the combination of an XSL style file (included by the administrator) to the XML file and the use of an XSLT processor (which can be PHP if you choose a server-side technology or the user's browser, if you choose a client-side technology) generates the report file in XHTML format that can be displayed directly on the web.
2. Through an XSL-FO file (inserted by the administrator) and the use of Apache FOP can generate PDF, RTF and other formats.

There are two possibilities to generate the report:

• reports based on tables
• reports based on queries

Reports based on tables show the contents of the database table selected, while the query-based reports allow you to show the result of an SQL query written ad hoc.

 Please note: The reports generated from queries have one major disadvantage: You can generate a report of a single record based on the primary key.However, the reports generated from queries offer greater opportunities for customization and greater control over the data. Is there a system (which you should apply here) to get the benefits of the flexibility of tables and queries, namely the generation of views in writing SQL to generate reports. VFront will view as a normal table, whereby it has been manually set the primary key to view the setting of the registers (for more information, see also Setting the SQL View.

Clicking on "Create new XML report from table or view" and "Create a new report from query" to access the module to create the new reports. Here you can define some parameters:

Report Name
a descriptive name for the report (consisting of only letters, numbers and hyphens).
Table
(only if you chose to generate the report from a table or a view) indicates the table from which to generate the report. Are displayed in a pull-down tables and views currently available.
Defining SQL query

(only if you chose to generate the report from a query) indicates the SQL query from which to generate the report. It 'a button "Test" to prove the formal correctness of the query.

Access type of the report.
The report can be
• Not accessible for example, in test phase
• Public (Web) in which case the report is open on the web.Be careful, this way your table's data will be accessible to everyone, not just users of the front end.
• Front end in this case the reports are accessible only to authenticated users on VFront
• Only / group / s in this case the reports are accessible only to authenticated users on VFront belonging to one or more specified groups
XSL
is possible to upload an XSL stylesheet to apply to this report. Otherwise will apply a style sheet by default.
XSL-FO
to associate print stylesheet for reports in PDF (see below). Is possible to upload an XSL-FO to apply to this report. You can use also the default file. The default choice is "none" that is not generated any reports.
 Please note: For the XLS-FO you must install the FOP package.

### Report (X) HTML: Using XSL server side and client side

Reports (X) HTML and XML are generated via transformation with XSLT. This transformation can be performed on the client side or server side. Variable in the menu System variables can choose whether to make the transformation client-side or server side.

The client-side processing means that the browser loads the XML that is associated with the style sheet and make the transformation. The advantage of this system is that you do not necessarily need to have installed on your server for PHP XSL package. The disadvantages, however, consist in: security (in the XML source that reaches the browser can be shown data fields that you do not want to show users) and services (client-side processing involves a transaction of data potentially major).

Therefore, whenever possible, we suggest you use the server-side processing.

#### Where are the reports XHTML  ?

When a report is generated based on a table you can go directly to

http://VFRONT_URL/xml/TABLE_NAME/


Table of available reports: link thumbnail

VFRONT_URL where is the URL of your installation VFront and table_name table as you read the report. From here you can have a menu of available reports. E 'can be accessed directly from the link in the address column of the table preview report (see picture).

If instead generates a report based on a query, the address will appear as

http://VFRONT_URL/xml/@REPORT_NAME/


with in the report name chosen by a predetermined character @. In both cases you will get a screen with links to access the pages of the report. For example, the default HTML report shows a list of records in tables, separated by a line as in figure  : Through the use of XSL style sheets you can have reports far more complex and articulated, for example to be shown to the public.

E 'in this way can create Web pages formatted correctly for example, show notices, contracts, boards of any kind directly targeting the correct URL from a static page. Other ways to read the reports are given by the following URL syntax:

http://VFRONT_URL/xml/TABLE_NAME/all/


Show all records in the table (not recommended if there are many records).

Example: http://localhost/vfront/xml/banca/all/

http://VFRONT_URL/xml/TABLE_NAME/OFFSET,LIMIT/


Show records from the table with paging. OFFSET indicates the starting point and limit the number of records to display.

Example: http://localhost/vfront/xml/banca/0,50/

http://VFRONT_URL/xml/TABLE_NAME/COUNTER/


Shows a single record sorted in the order of the primary key of the table. The meter should be a number.

Example: http://localhost/vfront/xml/banca/12/

http://VFRONT_URL/xml/TABLE_NAME/id/RECORD_ID/


Shows a single record, where ID is the numeric code of the record (of the field set as primary key).

Example: http://localhost/vfront/xml/banca/id/10008/

In all the exposed methods can be accessed by simply adding XML to XML at the end of the URL.

Example: http://localhost/vfront/xml/banca/id/10008/XML

A similar applies to reports based on queries.

In this case, however, is not possible to know in advance the field constituting the primary key.

Will therefore be valid only the first three methods:

http://VFRONT_URL/xml/@REPORT_NAME/all/


Example http://localhost/vfront/xml/@report_banca_1/all/

http://VFRONT_URL/xml/@REPORT_NAME/OFFSET,LIMIT/


Example: http://localhost/vfront/xml/@report_banca_1/0,50/

http://VFRONT_URL/xml/@REPORT_NAME/COUNTER/


Example: http://localhost/vfront/xml/@report_banca_1/12/

For example, the default HTML report shows a list of records in tables, separated by a line as in figure:

HTML report (Details)

### Report PDF: XSL-FO and Apache FOP

VFront is arranged also to generate reports in PDF through XSL-FO. To do this the application uses open source FOP. To use Apache FOP is necessary that the application is present on the server you are using. You must set the configuration file VFront the correct path for Apache FOP (for details see the Manuale installation guide. The latest version (<=0.94) allows the generation of other report formats (such as RTF).

The PDF reports are generated by calling Apache FOP VFront by opening a shell (command EXEC()). Therefore make sure that Apache can run FOP.

To generate a report in PDF you must set an XSL-FO to create the report.There is also a sheet of default that generates a simple report.

In any case to invoke the report PDF, simply add the words PDF in the URL as shown in the previous section.

Examples (PDF)
http://localhost/vfront/xml/banca/all/PDF
http://localhost/vfront/xml/banca/id/10008/PDF

### Other report formats and use of Apache FOP 0.9 or later

Version 0.9.x of Apache FOP allows the creation of many output formats. One of these can be useful is RTF.

To recall RTF format other than the method is the same as HTML with the difference in the type of format you want to generate.

For example: http://localhost/vfront/xml/banca/id/10008/RTF generate an RTF file

or http://localhost/vfront/xml/banca/id/10008/TXT generate a TXT file

For additional configurations see the xml file / .htaccess rewrite rules for the url. For Advanced Users see the script xml / fop_exec.php and formats allowed.

For output formats generated by Apache FOP, please refer to the documentation for the version of FOP you are using.

## Statistics and graphs on the data

 Please note: In order to use this module you need the PHP PEAR package and packages Image/Graph and Image/Canvas (LGPL). To write new statistics is also necessary to know the SQL.

VFront supports the creation of graphs and statistics on the data to the administrators (level 2 and 3). To access the statistics menu click on "Statistics database" on the home page of the administration. From here you can create new statistics by writing a query in SQL.

### The statistics page

When you access the menu statistics for the first time you are faced with a page with two links:

• Create a new statistic
• Populating data tables

Population data table is a special statistical default that does nothing but show a bar chart that describes the number of records currently on the tables and views in the database that VFront are reading.

Create a new statistic is instead in the form to start customizing the menu of the statistics.

Clicking the link leads to an entry form with the following items:

• Statistics Name and 'the descriptive name of the statistic, the label.
• Statistics description describes the statistics that you are creating.It may be useful as a reminder
• Access type for the new statistics Statistics can have rights of access.Through this feature you can set as the statistical publications (all users VFront Level 2), accessible only to my group, accessible only to me.
• Type of chart you want at the moment there are two choices: Bar and Pie.Depending on the type of data you want to represent is more useful to one type or another.
• This statistical definition box is written the SQL code. Note how VFront expects a query that, as can be articulated, returns two columns: the labels and values.There is also a small button "Test" that allows you to test at the time if the query generates an error or is correct (at least formally).

For example, here is a query on two tables (bank and bancaagenzie). The graph shows the number of branches of Italian banks with more than 500 agencies. Note that the first field is selected label and the second is a value:

SELECT b.banca, count (ba.abi) as n
FROM bank b, bancaagenzia ba
WHERE b.abi = ba.abi
GROUP BY b.banca
HAVING n> 500
ORDER BY n DESC


Statistical test

If I wanted to see the data with a pie chart can always change the statistics. To do this, simply click on "edit" link that appears next to the name with link statistics.

Statistical test (pie chart)

The result is shown in the figure.

It is always possible to remove a statistic. In the main menu, simply click on the link in red next to the name with link statistics.

It is also recalled that the statistics are dynamic, ie the returned data in tabular and graphical form are calculated in real time. Therefore the data will always be updated in real time, even if changes were made to data in the tables involved in the query that generates the statistics.

## System variables

From the administration menu of VFront you can access the variables menu and set some parameters concerning use and how to display application. The variables described here are registered in the database (the database VFront variables in the table) and not in the configuration file described in the document Guide.

There are two types of variables: global variables and variables specific to group / register. Global variables allow you to create default settings while creating specific exceptions for a specific group register. From this it is clear that if a variable is also defined specifically for a group, this will take priority over the global economy.

Variables

The specific variables can not be defined, but if he wants to establish a just click on the "Set new variable and choose from the dropdown of available variables that you want to define specifically for a group / register.

Note that figure is not present in the menu of variables specific to group / register. This is a normal condition when there is only one group (group 0 - default). If another group was created automatically display the menu of specific variables.

The variables are:

altezza_iframe_tabella
Height in number of pixels of the rectangle to display the data in tabellas is the size of the iframe in the table view of the masks of the tables
crea_nuovo_valore_ref
allows in the case of the parent table writable inserting new values in medesimaSe activated this parameter causes a link appears in the tendon of the fields 1 to many, to open the card on the table.For example, if the drop down (the field) point at a table "Customer" and the desired customer is not present in this way you can add the record and continue the compilation of the table. The function also depends on the fact that the user can or can not operate on the parent table in this example the table "Customer".
formati_attach
Formats allowed for file attachments, separated by commas
js_test
Enable Javascript control on the contents of the fields. See more on
max_char_tabella
Maximum number of characters to display in views to the table. (0 = all)
max_tempo_edit
Time of availability of the record. This parameter is related to the "lock" the record, if multiple users simultaneously want to change a record in the same table. The lock mechanism decade
a) when the first user who has entered into change on the record save the record;
b) the first person who entered into amendment removes the edit mode;
c) where the user, however much time in this change on the record after the number seconds expressed by this variable would fall automatically.
n_record_tabella
Number of records that display tables of data
passo_avanzamento_veloce
Number of records set for fast movement between records in tables. This is the number of records of progress of the buttons with icon ">>" and "<<" in forms of tables.
If enabled the log shows the option to change the password (if the login does not work outside). Works only if the authentication is set directly on the DB and not VFront eg on LDAP and / or external databases.This is because VFront should not assume that they could modify the data of an external database or an LDAP directory.
server_xslt
Whether to use server-side XSLT transformation (to disable support for non PHP) is recommended to keep the variable activated if you have the PHP module in point would be sent to the client directly to XHTML and XML with link all'XSL. This is a good trick in terms of application performance and security. If unable to use on your server functions processing you set the variable to "NO" and the transformation will be entrusted to the client (web browser).
shortcut_tastiera_attivi
Allows use keyboard shortcuts in forms of tables and views. Towards these functions can be very useful for a more rapid and productive VFront. If you were using browser specific or there are problems here you can disable this option.
shortcut_tastiera_popup
Show in forms a small lip on the right which shows a popup that reminds the keyboard shortcuts you. The behavior of this variable is still influenced by the variable above (shortcut_tastiera_attivi): if keyboard shortcuts were disabled, the tab will not display even if this variable were active (as unnecessarily confuse the user).
textarea_cols
Number of columns for text boxes in forms
textarea_rows
Number of rows for the text boxes in forms
usa_calendari
Indicates whether or not to be used calendars to facilitate the insertion date fields (0 = no, 1 = yes) is suggested to activate the calendars. If this is not possible it is suggested to activate a check on the validity of the field for the correctness of the input data.
usa_history
Set if you must use the browser's history. Thus allow to use the keys back and forth without leaving the browser tab. It 'a good idea to keep the variable to YES, to improve the usability of the application. It was found that Opera does not support this feature: for a list of browsers that support full VFront see section client-side technology.

## 12 Exporting data and database backup

The export of data tables is an option that can be performed by users who possess the appropriate permissions. Permission to export data may in fact be defined for each table for each group. If a user can export data, see the view tab, the button "Export data".

Clicking this will open a popup window with some options (see figure):

Export data from a form

Format
You can choose the CSV (comma separated value), recommended for tables with lots of data, standard HTML, ODS, namely the Open Document Format, used among others by OpenOffice Calc, and XLS is used by Microsoft Excel.
Mode
Data as present in the table means that the table is shown in a "raw", that shows the "raw" data as is stored in databases. Conversely formatted data set in the register of the group, show the data with the registry settings, ie whether for field "region ID" was set to take data from a table parameters with all municipalities and choose to show name common in this type of approach will read the name of the town while in the "raw" mode will read the numeric code that identifies it (and who can tell a little user).

For administrators Level 3 also contains the option to dump the database. The dump is done through the normal database commands in a shell (mysqldump or pgdump). This allows quick recovery of both the database data and what the rules, for example a backup. The files are compressed and sent in a standard Linux (.tar.gz).

## Importing Data

Section still to be written

## Layout settings

Changing Graphics to VFront may be useful not only for aesthetic reasons but also to differentiate immediately different environments (such as a test server from one of production, different environments, etc.).

To change the graphics settings VFront you go on Administration -> Layout settings

From here you can choose the graphical theme to use.

## Test settings VFront

From the Administration menu, you access the Miscellaneous section, where there is a link "Test Settings VFront. And 'This is a diagnostic that analyzes the state of the installation of VFront. It can be very useful, especially just after installation to verify that all required parameters are configured correctly.

Currently here are the following sections:

VFront Version
provides information about the version of VFront and databases currently in use.
Software Version
Displays the version of PHP and database (MySQL or PostgreSQL) currently in use.
Security Settings
Inform the administrator about the state of folders and files critical for safety.
PHP modules
VFront uses some PHP modules are not always present. Here is shown the loading of modules using VFront
PHP Variables
information on some important variables VFront
PEAR Modules
VFront use PEAR packages and Image/Graph, Image/Color, Image/Canvas (LGPL) to produce graphs of statistics. Is shown here the existence of these packages.
Apache modules
Information about some important Apache module for PHP
Settings folders writable
VFront uses for its efficient operation writes some folders where temporary files or other. These folders must be writable by Apache and this section discusses that this could happen.
Apache FOP
This section covers the executable used by FOP VFront Reporting in PDF and other formats using XSL-FO transformations. Is analyzed whether the FOP and its executable version.

## Appendix 1 - Credits and applications used

Are mentioned applications developed by third parties currently in use in VFront. Some applications are optional on VFront. It is also reported the type of license applications mentioned above.

Prototype
http://prototype.conio.net/
Javascript function library - MIT License
Scriptaculous
http://script.aculo.us/
Javascript function library - MIT License
PHPMailer
http://phpmailer.sourceforge.net
Library for sending email via PHP - LGPL License
YAV
http://yav.sourceforge.net/
Tool validation JavaScript - LGPL License
Apache FOP
http://xmlgraphics.apache.org/fop/
Report Generation PDF and other formats using XSL-FO processing - Apache License 2.0
DHTMLxGrid
http://www.scbr.com/docs/products/dhtmlxGrid/
generator in javascript dynamic tables in table view GPL License
MD5 algorithm for Javascript
http://pajhome.org.uk/crypt/md5
FCKeditor
http://www.fckeditor.net/
Rich Text Editor in JavaScript - LGPL License
JsCalendar
http://sourceforge.net/projects/jscalendar/
Generator calendars javascript - GPL License
Icons
used are part of the project Crystal http://www.everaldo.com/crystal/