fmsystem-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Fmsystem-commits] [15542] Stable: Merge 15359:15541 from trunk


From: sigurdne
Subject: [Fmsystem-commits] [15542] Stable: Merge 15359:15541 from trunk
Date: Tue, 30 Aug 2016 11:14:07 +0000 (UTC)

Revision: 15542
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=15542
Author:   sigurdne
Date:     2016-08-30 11:14:07 +0000 (Tue, 30 Aug 2016)
Log Message:
-----------
Stable: Merge 15359:15541 from trunk

Modified Paths:
--------------
    branches/Version-2_0-branch/admin/inc/class.ui_custom.inc.php
    branches/Version-2_0-branch/admin/inc/class.uiaccounts.inc.php
    branches/Version-2_0-branch/admin/templates/base/custom.xsl
    branches/Version-2_0-branch/bim/inc/class.sobimitem.inc.php
    branches/Version-2_0-branch/bim/setup/setup.inc.php
    branches/Version-2_0-branch/bim/setup/tables_current.inc.php
    branches/Version-2_0-branch/bim/setup/tables_update.inc.php
    branches/Version-2_0-branch/booking/inc/class.socommon.inc.php
    branches/Version-2_0-branch/booking/inc/class.uiapplication.inc.php
    branches/Version-2_0-branch/controller/inc/class.socase.inc.php
    branches/Version-2_0-branch/controller/inc/class.socheck_item.inc.php
    branches/Version-2_0-branch/controller/inc/class.socheck_list.inc.php
    branches/Version-2_0-branch/controller/inc/class.socommon.inc.php
    branches/Version-2_0-branch/controller/inc/class.socontrol.inc.php
    branches/Version-2_0-branch/controller/inc/class.socontrol_group.inc.php
    
branches/Version-2_0-branch/controller/inc/class.socontrol_group_list.inc.php
    branches/Version-2_0-branch/controller/inc/class.socontrol_item.inc.php
    branches/Version-2_0-branch/controller/inc/class.socontrol_item_list.inc.php
    
branches/Version-2_0-branch/controller/inc/class.socontrol_item_option.inc.php
    branches/Version-2_0-branch/controller/inc/class.sodocument.inc.php
    branches/Version-2_0-branch/controller/inc/class.soprocedure.inc.php
    branches/Version-2_0-branch/controller/inc/class.uicomponent.inc.php
    branches/Version-2_0-branch/controller/inc/class.uicontrol.inc.php
    branches/Version-2_0-branch/controller/inc/class.uicontrol_group.inc.php
    branches/Version-2_0-branch/controller/inc/class.uicontrol_item.inc.php
    branches/Version-2_0-branch/controller/inc/class.uidocument.inc.php
    branches/Version-2_0-branch/controller/inc/class.uiprocedure.inc.php
    branches/Version-2_0-branch/controller/inc/model/class.model.inc.php
    branches/Version-2_0-branch/controller/templates/base/component.xsl
    branches/Version-2_0-branch/frontend/inc/class.bofellesdata.inc.php
    branches/Version-2_0-branch/helpdesk/inc/class.botts.inc.php
    branches/Version-2_0-branch/helpdesk/inc/class.menu.inc.php
    branches/Version-2_0-branch/helpdesk/inc/class.sotts.inc.php
    branches/Version-2_0-branch/helpdesk/inc/class.uitts.inc.php
    branches/Version-2_0-branch/helpdesk/inc/hook_config.inc.php
    branches/Version-2_0-branch/helpdesk/js/portico/tts.add.js
    branches/Version-2_0-branch/helpdesk/js/portico/tts.view.js
    branches/Version-2_0-branch/helpdesk/setup/setup.inc.php
    branches/Version-2_0-branch/helpdesk/setup/tables_current.inc.php
    branches/Version-2_0-branch/helpdesk/templates/base/config.tpl
    branches/Version-2_0-branch/helpdesk/templates/base/tts.xsl
    branches/Version-2_0-branch/phpgwapi/inc/adodb/README.md
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-active-record.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-active-recordx.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-csvlib.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-datadict.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-error.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-errorhandler.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-errorpear.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-exceptions.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-iterator.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-lib.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-memcache.lib.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-pager.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-pear.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-perf.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-php4.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-time.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-xmlschema.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb-xmlschema03.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/adodb.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/composer.json
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-access.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-db2.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-firebird.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-generic.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-ibase.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-informix.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-mssql.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-mssqlnative.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-mysql.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-oci8.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-postgres.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-sapdb.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-sqlite.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/datadict/datadict-sybase.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-access.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-ado.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-ado5.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-ado_access.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-ado_mssql.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-ads.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-borland_ibase.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-csv.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-db2.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-db2oci.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-db2ora.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-fbsql.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-firebird.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-ibase.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-informix.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-informix72.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-ldap.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-mssql.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-mssql_n.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-mssqlnative.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-mssqlpo.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-mysql.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-mysqli.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-mysqlpo.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-mysqlt.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-netezza.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-oci8.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-oci805.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-oci8po.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-oci8quercus.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-odbc.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-odbc_db2.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-odbc_mssql.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-odbc_oracle.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-odbtp.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-odbtp_unicode.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-oracle.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-pdo.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-pdo_mssql.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-pdo_mysql.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-pdo_oci.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-pdo_pgsql.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-pdo_sqlite.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-postgres.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-postgres64.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-postgres7.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-postgres8.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-postgres9.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-proxy.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-sapdb.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-sqlanywhere.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-sqlite.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-sqlite3.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-sqlitepo.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-sybase.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-sybase_ase.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-vfp.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-ar.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-bg.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-ca.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-cn.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-cz.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-da.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-de.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-fr.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-hu.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-it.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-pl.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-pt-br.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-sv.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/pear/Auth/Container/ADOdb.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/perf/perf-db2.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/perf/perf-informix.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/perf/perf-mssql.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/perf/perf-mssqlnative.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/perf/perf-mysql.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/perf/perf-oci8.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/perf/perf-postgres.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/pivottable.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/rsfilter.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/server.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-compress-bzip2.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-compress-gzip.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-cryptsession.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-cryptsession2.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-encrypt-mcrypt.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-encrypt-md5.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-encrypt-secret.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-session-clob.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-session-clob2.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-session.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/session/adodb-session2.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/old/adodb-cryptsession.php
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/session/old/adodb-session-clob.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/session/old/adodb-session.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/benchmark.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/client.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/test-datadict.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/test-php5.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/test.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/test3.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/test4.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/test5.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/testcache.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/testdatabases.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/testmssql.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/testoci8.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/testoci8cursor.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/testpaging.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/testpear.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tests/testsessions.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/toexport.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/tohtml.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/auth/class.auth_customsso.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.acl.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.contacts_sql.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.custom_fields.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.db.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.db_adodb.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.db_pdo.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.ofphpgwapi.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.phpgw.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/class.translation.inc.php
    
branches/Version-2_0-branch/phpgwapi/inc/phpexcel/PHPExcel/Calculation/Functions.php
    branches/Version-2_0-branch/phpgwapi/setup/setup.inc.php
    branches/Version-2_0-branch/phpgwapi/setup/tables_current.inc.php
    branches/Version-2_0-branch/phpgwapi/setup/tables_update.inc.php
    branches/Version-2_0-branch/phpgwapi/templates/base/attributes_form.xsl
    branches/Version-2_0-branch/phpgwapi/templates/base/datatable_jquery.xsl
    branches/Version-2_0-branch/phpgwapi/templates/bkbooking/navbar.inc.php
    branches/Version-2_0-branch/preferences/inc/class.boadmin_acl.inc.php
    branches/Version-2_0-branch/property/inc/class.boadmin.inc.php
    branches/Version-2_0-branch/property/inc/class.boadmin_entity.inc.php
    branches/Version-2_0-branch/property/inc/class.boadmin_location.inc.php
    branches/Version-2_0-branch/property/inc/class.bocommon.inc.php
    branches/Version-2_0-branch/property/inc/class.boentity.inc.php
    branches/Version-2_0-branch/property/inc/class.bogeneric.inc.php
    branches/Version-2_0-branch/property/inc/class.bolocation.inc.php
    branches/Version-2_0-branch/property/inc/class.botts.inc.php
    branches/Version-2_0-branch/property/inc/class.bowo_hour.inc.php
    branches/Version-2_0-branch/property/inc/class.custom_fields.inc.php
    branches/Version-2_0-branch/property/inc/class.db_oci8.inc.php
    branches/Version-2_0-branch/property/inc/class.menu.inc.php
    branches/Version-2_0-branch/property/inc/class.soadmin_entity.inc.php
    branches/Version-2_0-branch/property/inc/class.soadmin_location.inc.php
    branches/Version-2_0-branch/property/inc/class.soagreement.inc.php
    branches/Version-2_0-branch/property/inc/class.socustom.inc.php
    branches/Version-2_0-branch/property/inc/class.sodocument.inc.php
    branches/Version-2_0-branch/property/inc/class.soentity.inc.php
    branches/Version-2_0-branch/property/inc/class.soevent.inc.php
    branches/Version-2_0-branch/property/inc/class.sogab.inc.php
    branches/Version-2_0-branch/property/inc/class.sogeneric.inc.php
    branches/Version-2_0-branch/property/inc/class.soinvestment.inc.php
    branches/Version-2_0-branch/property/inc/class.sojasper.inc.php
    branches/Version-2_0-branch/property/inc/class.solookup.inc.php
    branches/Version-2_0-branch/property/inc/class.sopending_action.inc.php
    branches/Version-2_0-branch/property/inc/class.sopricebook.inc.php
    branches/Version-2_0-branch/property/inc/class.soproject.inc.php
    branches/Version-2_0-branch/property/inc/class.sorequest.inc.php
    branches/Version-2_0-branch/property/inc/class.soresponsible.inc.php
    branches/Version-2_0-branch/property/inc/class.sos_agreement.inc.php
    branches/Version-2_0-branch/property/inc/class.sotemplate.inc.php
    branches/Version-2_0-branch/property/inc/class.sotts.inc.php
    branches/Version-2_0-branch/property/inc/class.soworkorder.inc.php
    branches/Version-2_0-branch/property/inc/class.uiadmin.inc.php
    branches/Version-2_0-branch/property/inc/class.uientity.inc.php
    branches/Version-2_0-branch/property/inc/class.uigeneric.inc.php
    branches/Version-2_0-branch/property/inc/class.uiimport.inc.php
    branches/Version-2_0-branch/property/inc/class.uilocation.inc.php
    branches/Version-2_0-branch/property/inc/class.uiproject.inc.php
    branches/Version-2_0-branch/property/inc/class.uitts.inc.php
    branches/Version-2_0-branch/property/inc/class.uiwo_hour.inc.php
    branches/Version-2_0-branch/property/inc/class.uiworkorder.inc.php
    
branches/Version-2_0-branch/property/inc/cron/default/synkroniser_avdelinger_med_fellesdata.php
    
branches/Version-2_0-branch/property/inc/cron/default/synkroniser_med_boei.php
    branches/Version-2_0-branch/property/inc/hook_config.inc.php
    branches/Version-2_0-branch/property/inc/import/import_update_generic.php
    branches/Version-2_0-branch/property/js/portico/location.edit.js
    branches/Version-2_0-branch/property/js/portico/project.edit.js
    branches/Version-2_0-branch/property/js/portico/wo_hour.index.js
    branches/Version-2_0-branch/property/setup/default_records.inc.php
    branches/Version-2_0-branch/property/setup/phpgw_no.lang
    branches/Version-2_0-branch/property/setup/setup.inc.php
    branches/Version-2_0-branch/property/setup/tables_current.inc.php
    branches/Version-2_0-branch/property/setup/tables_update.inc.php
    branches/Version-2_0-branch/property/templates/base/admin.xsl
    branches/Version-2_0-branch/property/templates/base/admin_entity.xsl
    branches/Version-2_0-branch/property/templates/base/attributes_form.xsl
    branches/Version-2_0-branch/property/templates/base/config.tpl
    branches/Version-2_0-branch/property/templates/base/project.xsl
    branches/Version-2_0-branch/property/templates/base/tts.xsl
    branches/Version-2_0-branch/property/templates/base/wo_hour.index.xsl
    branches/Version-2_0-branch/rental/inc/class.bofellesdata.inc.php
    branches/Version-2_0-branch/rental/inc/class.menu.inc.php
    branches/Version-2_0-branch/rental/inc/class.soadjustment.inc.php
    branches/Version-2_0-branch/rental/inc/class.soapplication.inc.php
    branches/Version-2_0-branch/rental/inc/class.socomposite.inc.php
    branches/Version-2_0-branch/rental/inc/class.socontract.inc.php
    branches/Version-2_0-branch/rental/inc/class.sonotification.inc.php
    branches/Version-2_0-branch/rental/inc/class.soparty.inc.php
    branches/Version-2_0-branch/rental/inc/class.uiapplication.inc.php
    branches/Version-2_0-branch/rental/inc/class.uicomposite.inc.php
    branches/Version-2_0-branch/rental/inc/class.uicontract.inc.php
    branches/Version-2_0-branch/rental/inc/class.uiproperty_location.inc.php
    branches/Version-2_0-branch/rental/inc/model/class.application.inc.php
    branches/Version-2_0-branch/rental/inc/model/class.composite.inc.php
    branches/Version-2_0-branch/rental/inc/model/class.contract.inc.php
    
branches/Version-2_0-branch/rental/inc/model/class.contract_price_item.inc.php
    branches/Version-2_0-branch/rental/inc/model/class.model.inc.php
    branches/Version-2_0-branch/rental/js/rental/application.edit.js
    branches/Version-2_0-branch/rental/js/rental/contract.edit.js
    branches/Version-2_0-branch/rental/js/rental/contract.index.js
    branches/Version-2_0-branch/rental/setup/default_records.inc.php
    branches/Version-2_0-branch/rental/setup/phpgw_no.lang
    branches/Version-2_0-branch/rental/setup/setup.inc.php
    branches/Version-2_0-branch/rental/setup/tables_current.inc.php
    branches/Version-2_0-branch/rental/setup/tables_update.inc.php
    branches/Version-2_0-branch/rental/templates/base/application.xsl
    branches/Version-2_0-branch/rental/templates/base/composite.xsl

Added Paths:
-----------
    branches/Version-2_0-branch/helpdesk/inc/custom/
    branches/Version-2_0-branch/helpdesk/inc/hook_settings.inc.php
    branches/Version-2_0-branch/helpdesk/setup/phpgw_no.lang
    branches/Version-2_0-branch/helpdesk/setup/tables_update.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/LICENSE.md
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/README.md
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/changelog.md
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/changelog_v2.x.md
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/changelog_v3.x.md
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/changelog_v4+5.md
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/changelog_v4.x.md
    
branches/Version-2_0-branch/phpgwapi/inc/adodb/drivers/adodb-pdo_sqlsrv.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-eo.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-ru.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-th.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-uk.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/nbproject/
    branches/Version-2_0-branch/phpgwapi/inc/adodb/x.php
    branches/Version-2_0-branch/phpgwapi/inc/class.socommon.inc.php

Removed Paths:
-------------
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/adodb-faq.html
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/docs-active-record.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/docs-adodb.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/docs-datadict.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/docs-oracle.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/docs-perf.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/docs-session.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/docs-session.old.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/index.html
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/old-changelog.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/tips_portable_sql.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/docs/tute.htm
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-bgutf8.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-esperanto.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-ru1251.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb-uk1251.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/lang/adodb_th.inc.php
    branches/Version-2_0-branch/phpgwapi/inc/adodb/license.txt

Property Changed:
----------------
    branches/Version-2_0-branch/
    branches/Version-2_0-branch/booking/


Property changes on: branches/Version-2_0-branch
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/dev-syncromind:13653
/branches/dev-syncromind-2:14937-15027,15165-15215,15223-15228,15230-15243,15245-15250,15254-15257
/branches/stavangerkommune:12743-12875,12986
/trunk:14721-14732,14734-14735,14737,14739,14741,14743-14744,14746-14749,14751,14753,14755-14757,14759,14761-14764,14766-14768,14770-14783,14785-14792,14794-14813,14815-14816,14818,14820-14822,14824-14825,14827-14829,14831-14834,14836,14838,14840-14842,14844-14845,14847,14849-14866,14868-14869,14871,14873-14875,14877-14878,14880-14884,14886-14896,14898,14900-14902,14904,14906-14909,14911-14915,14917-14919,14921-14922,14924-14978,14980-15258,15260-15261,15263-15264,15266-15285,15287-15288,15290-15291,15293,15295,15297,15299-15305,15307-15310,15312-15335,15337-15352,15354,15356,15358
   + /branches/dev-syncromind:13653
/branches/dev-syncromind-2:14937-15027,15165-15215,15223-15228,15230-15243,15245-15250,15254-15257
/branches/stavangerkommune:12743-12875,12986
/trunk:14721-14732,14734-14735,14737,14739,14741,14743-14744,14746-14749,14751,14753,14755-14757,14759,14761-14764,14766-14768,14770-14783,14785-14792,14794-14813,14815-14816,14818,14820-14822,14824-14825,14827-14829,14831-14834,14836,14838,14840-14842,14844-14845,14847,14849-14866,14868-14869,14871,14873-14875,14877-14878,14880-14884,14886-14896,14898,14900-14902,14904,14906-14909,14911-14915,14917-14919,14921-14922,14924-14978,14980-15258,15260-15261,15263-15264,15266-15285,15287-15288,15290-15291,15293,15295,15297,15299-15305,15307-15310,15312-15335,15337-15352,15354,15356,15358,15360-15541

Modified: branches/Version-2_0-branch/admin/inc/class.ui_custom.inc.php
===================================================================
--- branches/Version-2_0-branch/admin/inc/class.ui_custom.inc.php       
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/admin/inc/class.ui_custom.inc.php       
2016-08-30 11:14:07 UTC (rev 15542)
@@ -368,10 +368,25 @@
                                'menu_selection' => 
$GLOBALS['phpgw_info']['flags']['menu_selection']
                        );
 
-                       $multiple_choice = '';
-                       if(isset($values['column_info']['type']) && 
($values['column_info']['type'] == 'R' || $values['column_info']['type'] == 
'CH' || $values['column_info']['type'] == 'LB'))
+                       $multiple_choice = false;
+                       $custom_get_list = false;
+                       $custom_get_single = false;
+                       switch ($values['column_info']['type'])
                        {
-                               $multiple_choice = True;
+                               case 'R':
+                               case 'CH':
+                               case 'LB':
+                                       $multiple_choice = true;
+                                       break;
+                               case 'custom1':
+                                       $custom_get_list = true;
+                                       break;
+                               case 'custom2':
+                               case 'custom3':
+                                       $custom_get_list = true;
+                                       $custom_get_single = true;
+                                       break;
+                               default:
                        }
 
 //_debug_array($values);
@@ -386,6 +401,8 @@
                                'lang_new_value_statustext'                     
=> lang('New value for multiple choice'),
                                'multiple_choice'                               
        => $multiple_choice,
                                'value_choice'                                  
 => (isset($values['choice']) ? $values['choice'] : ''),
+                               'custom_get_list' => $custom_get_list,
+                               'custom_get_single' => $custom_get_single,
                                'lang_delete_value'                             
        => lang('Delete value'),
                                'lang_value'                                    
        => lang('value'),
                                'lang_delete_choice_statustext'         => 
lang('Delete this value from the list of multiple choice'),
@@ -444,7 +461,11 @@
                                'value_helpmsg'                                 
        => isset($values['helpmsg']) ? $values['helpmsg'] : '',
                                'lang_helpmsg'                                  
        => lang('help message'),
                                'lang_helpmsg_statustext'                       
=> lang('Enables help message for this attribute'),
-                               'value_location'                                
        => $location
+                               'value_location'                                
        => $location,
+                               'value_get_list_function' => 
$values['get_list_function'],
+                               'value_get_list_function_input' => 
print_r($values['get_list_function_input'], true),
+                               'value_get_single_function' => 
$values['get_single_function'],
+                               'value_get_single_function_input' => 
print_r($values['get_single_function_input'], true),
                        );
 //_debug_array($values);
 

Modified: branches/Version-2_0-branch/admin/inc/class.uiaccounts.inc.php
===================================================================
--- branches/Version-2_0-branch/admin/inc/class.uiaccounts.inc.php      
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/admin/inc/class.uiaccounts.inc.php      
2016-08-30 11:14:07 UTC (rev 15542)
@@ -699,6 +699,7 @@
                                'sms'                   => array('top_grant' => 
true),
                                'todo'                  => array('top_grant' => 
true),
                                'tts'                   => array('top_grant' => 
true),
+                               'helpdesk'              => array('top_grant' => 
true),
                        );
                        $GLOBALS['phpgw']->locations->verify($apps_with_acl);
 

Modified: branches/Version-2_0-branch/admin/templates/base/custom.xsl
===================================================================
--- branches/Version-2_0-branch/admin/templates/base/custom.xsl 2016-08-30 
10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/admin/templates/base/custom.xsl 2016-08-30 
11:14:07 UTC (rev 15542)
@@ -1,59 +1,59 @@
 <!-- $Id$ -->
 
 <xsl:template name="custom">
-               <xsl:choose>
-                       <xsl:when test="list_attribute">
-                               <xsl:apply-templates select="list_attribute"/>
-                       </xsl:when>
-                       <xsl:when test="edit_attrib">
-                               <xsl:apply-templates select="edit_attrib"/>
-                       </xsl:when>
-                       <xsl:when test="list_custom_function">
-                               <xsl:apply-templates 
select="list_custom_function"/>
-                       </xsl:when>
-                       <xsl:when test="edit_custom_function">
-                               <xsl:apply-templates 
select="edit_custom_function"/>
-                       </xsl:when>
-               </xsl:choose>
+       <xsl:choose>
+               <xsl:when test="list_attribute">
+                       <xsl:apply-templates select="list_attribute"/>
+               </xsl:when>
+               <xsl:when test="edit_attrib">
+                       <xsl:apply-templates select="edit_attrib"/>
+               </xsl:when>
+               <xsl:when test="list_custom_function">
+                       <xsl:apply-templates select="list_custom_function"/>
+               </xsl:when>
+               <xsl:when test="edit_custom_function">
+                       <xsl:apply-templates select="edit_custom_function"/>
+               </xsl:when>
+       </xsl:choose>
 </xsl:template>
        
 <xsl:template match="table_add">
-                       <tr>
-                               <td height="50">
+       <tr>
+               <td height="50">
                        <xsl:variable name="add_action">
                                <xsl:value-of select="add_action"/>
                        </xsl:variable>
                        <xsl:variable name="lang_add">
                                <xsl:value-of select="lang_add"/>
                        </xsl:variable>
-                                       <form method="post" 
action="{$add_action}">
-                                               <input type="submit" name="add" 
value="{$lang_add}" onMouseout="window.status='';return true;">
-                                                       <xsl:attribute 
name="onMouseover">
-                                                               
<xsl:text>window.status='</xsl:text>
-                                                                       
<xsl:value-of select="lang_add_standardtext"/>
-                                                               <xsl:text>'; 
return true;</xsl:text>
-                                                       </xsl:attribute>
-                                               </input>
-                                       </form>
-                               </td>
-                               <td height="50">
+                       <form method="post" action="{$add_action}">
+                               <input type="submit" name="add" 
value="{$lang_add}" onMouseout="window.status='';return true;">
+                                       <xsl:attribute name="onMouseover">
+                                               
<xsl:text>window.status='</xsl:text>
+                                               <xsl:value-of 
select="lang_add_standardtext"/>
+                                               <xsl:text>'; return 
true;</xsl:text>
+                                       </xsl:attribute>
+                               </input>
+                       </form>
+               </td>
+               <td height="50">
                        <xsl:variable name="done_action">
                                <xsl:value-of select="done_action"/>
                        </xsl:variable>
                        <xsl:variable name="lang_done">
                                <xsl:value-of select="lang_done"/>
                        </xsl:variable>
-                                       <form method="post" 
action="{$done_action}">
-                                               <input type="submit" name="add" 
value="{$lang_done}" onMouseout="window.status='';return true;">
-                                                       <xsl:attribute 
name="onMouseover">
-                                                               
<xsl:text>window.status='</xsl:text>
-                                                                       
<xsl:value-of select="lang_add_standardtext"/>
-                                                               <xsl:text>'; 
return true;</xsl:text>
-                                                       </xsl:attribute>
-                                               </input>
-                                       </form>
-                               </td>
-                       </tr>
+                       <form method="post" action="{$done_action}">
+                               <input type="submit" name="add" 
value="{$lang_done}" onMouseout="window.status='';return true;">
+                                       <xsl:attribute name="onMouseover">
+                                               
<xsl:text>window.status='</xsl:text>
+                                               <xsl:value-of 
select="lang_add_standardtext"/>
+                                               <xsl:text>'; return 
true;</xsl:text>
+                                       </xsl:attribute>
+                               </input>
+                       </form>
+               </td>
+       </tr>
 </xsl:template>
 
 
@@ -61,38 +61,38 @@
 
 <xsl:template match="list_attribute">
                
-               <table width="100%" cellpadding="2" cellspacing="2" 
align="center">
-                       <tr>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of select="lang_appname"/>
-                                       <xsl:text>: </xsl:text>
-                                       <xsl:value-of select="appname"/>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td align="left">
-                                       <xsl:call-template 
name="filter_location"/>
-                               </td>
+       <table width="100%" cellpadding="2" cellspacing="2" align="center">
+               <tr>
+                       <td class="th_text" align="left">
+                               <xsl:value-of select="lang_appname"/>
+                               <xsl:text>: </xsl:text>
+                               <xsl:value-of select="appname"/>
+                       </td>
+               </tr>
+               <tr>
+                       <td align="left">
+                               <xsl:call-template name="filter_location"/>
+                       </td>
 
-                               <td align="right">
-                                       <xsl:call-template name="search_field"/>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td colspan="3" width="100%">
-                                       <xsl:call-template name="nextmatchs"/>
-                               </td>
-                       </tr>
-               </table>
-               <table class="pure-table pure-table-bordered">
-                               <xsl:apply-templates 
select="table_header_attrib"/>
-                               <xsl:choose>
-                                       <xsl:when test="values_attrib != ''">
-                                       <xsl:apply-templates 
select="values_attrib"/>
-                                       </xsl:when>
-                               </xsl:choose>
-                               <xsl:apply-templates select="table_add"/>
-               </table>
+                       <td align="right">
+                               <xsl:call-template name="search_field"/>
+                       </td>
+               </tr>
+               <tr>
+                       <td colspan="3" width="100%">
+                               <xsl:call-template name="nextmatchs"/>
+                       </td>
+               </tr>
+       </table>
+       <table class="pure-table pure-table-bordered">
+               <xsl:apply-templates select="table_header_attrib"/>
+               <xsl:choose>
+                       <xsl:when test="values_attrib != ''">
+                               <xsl:apply-templates select="values_attrib"/>
+                       </xsl:when>
+               </xsl:choose>
+               <xsl:apply-templates select="table_add"/>
+       </table>
 </xsl:template>
 
 <xsl:template match="table_header_attrib">
@@ -102,36 +102,36 @@
        <xsl:variable name="sort_name">
                <xsl:value-of select="sort_name"/>
        </xsl:variable>
-               <tr class="th">
-                       <th class="th_text" width="10%" align="left">
+       <tr class="th">
+               <th class="th_text" width="10%" align="left">
                        <a href="{$sort_name}">
                                <xsl:value-of select="lang_name"/>
                        </a>
-                       </th>
-                       <th class="th_text" width="20%" align="left">
-                               <xsl:value-of select="lang_descr"/>
-                       </th>
-                       <th class="th_text" width="1%" align="left">
-                               <xsl:value-of select="lang_datatype"/>
-                       </th>
+               </th>
+               <th class="th_text" width="20%" align="left">
+                       <xsl:value-of select="lang_descr"/>
+               </th>
+               <th class="th_text" width="1%" align="left">
+                       <xsl:value-of select="lang_datatype"/>
+               </th>
                <th class="th_text" width="1%" align="center">
                        <xsl:value-of select="lang_group"/>
                </th>
-                       <th class="th_text" width="5%" align="center">
+               <th class="th_text" width="5%" align="center">
                        <a href="{$sort_sorting}">
                                <xsl:value-of select="lang_sorting"/>
                        </a>
-                       </th>
-                       <th class="th_text" width="1%" align="center">
-                               <xsl:value-of select="lang_search"/>
-                       </th>
-                       <th class="th_text" width="5%" align="center">
-                               <xsl:value-of select="lang_edit"/>
-                       </th>
-                       <th class="th_text" width="5%" align="center">
-                               <xsl:value-of select="lang_delete"/>
-                       </th>
-               </tr>
+               </th>
+               <th class="th_text" width="1%" align="center">
+                       <xsl:value-of select="lang_search"/>
+               </th>
+               <th class="th_text" width="5%" align="center">
+                       <xsl:value-of select="lang_edit"/>
+               </th>
+               <th class="th_text" width="5%" align="center">
+                       <xsl:value-of select="lang_delete"/>
+               </th>
+       </tr>
 </xsl:template>
 
 <xsl:template match="values_attrib"> 
@@ -147,268 +147,268 @@
        <xsl:variable name="lang_delete_text">
                <xsl:value-of select="lang_delete_text"/>
        </xsl:variable>
-                       <tr>
-                               <xsl:attribute name="class">
-                                       <xsl:choose>
-                                               <xsl:when test="@class">
-                                                       <xsl:value-of 
select="@class"/>
-                                               </xsl:when>
-                                               <xsl:when test="position() mod 
2 = 0">
-                                                       
<xsl:text>row_off</xsl:text>
-                                               </xsl:when>
-                                               <xsl:otherwise>
-                                                       
<xsl:text>row_on</xsl:text>
-                                               </xsl:otherwise>
-                                       </xsl:choose>
-                               </xsl:attribute>
-                               <td align="left">
-                                       <xsl:value-of select="column_name"/>
-                               </td>
-                               <td>
-                                       <xsl:value-of select="input_text"/>
-                               </td>
-                               <td>
-                                       <xsl:value-of select="datatype"/>
-                               </td>
+       <tr>
+               <xsl:attribute name="class">
+                       <xsl:choose>
+                               <xsl:when test="@class">
+                                       <xsl:value-of select="@class"/>
+                               </xsl:when>
+                               <xsl:when test="position() mod 2 = 0">
+                                       <xsl:text>row_off</xsl:text>
+                               </xsl:when>
+                               <xsl:otherwise>
+                                       <xsl:text>row_on</xsl:text>
+                               </xsl:otherwise>
+                       </xsl:choose>
+               </xsl:attribute>
+               <td align="left">
+                       <xsl:value-of select="column_name"/>
+               </td>
+               <td>
+                       <xsl:value-of select="input_text"/>
+               </td>
+               <td>
+                       <xsl:value-of select="datatype"/>
+               </td>
                <td align="right">
                        <xsl:value-of select="group_id"/>
                </td>
-                               <td>
-                                       <table align="left">
-                                               <tr>
-                                                       <td>
-                                                               <xsl:value-of 
select="sorting"/>
-                                                       </td>
+               <td>
+                       <table align="left">
+                               <tr>
+                                       <td>
+                                               <xsl:value-of select="sorting"/>
+                                       </td>
 
-                                                       <td align="left">
+                                       <td align="left">
                                                <xsl:variable name="link_up">
                                                        <xsl:value-of 
select="link_up"/>
                                                </xsl:variable>
                                                <a href="{$link_up}" 
onMouseover="window.status='{$lang_up_text}';return true;" 
onMouseout="window.status='';return true;">
                                                        <xsl:value-of 
select="text_up"/>
                                                </a>
-                                                               <xsl:text> | 
</xsl:text>
+                                               <xsl:text> | </xsl:text>
                                                <xsl:variable name="link_down">
                                                        <xsl:value-of 
select="link_down"/>
                                                </xsl:variable>
                                                <a href="{$link_down}" 
onMouseover="window.status='{$lang_down_text}';return true;" 
onMouseout="window.status='';return true;">
                                                        <xsl:value-of 
select="text_down"/>
                                                </a>
-                                                       </td>
+                                       </td>
 
-                                               </tr>
-                                       </table>
-                               </td>
-                               <td align="center">
-                                       <xsl:value-of select="search"/>
-                               </td>
-                               <td align="center">
+                               </tr>
+                       </table>
+               </td>
+               <td align="center">
+                       <xsl:value-of select="search"/>
+               </td>
+               <td align="center">
                        <xsl:variable name="link_edit">
                                <xsl:value-of select="link_edit"/>
                        </xsl:variable>
                        <a href="{$link_edit}" 
onMouseover="window.status='{$lang_edit_text}';return true;" 
onMouseout="window.status='';return true;">
                                <xsl:value-of select="text_edit"/>
                        </a>
-                               </td>
-                               <td align="center">
+               </td>
+               <td align="center">
                        <xsl:variable name="link_delete">
                                <xsl:value-of select="link_delete"/>
                        </xsl:variable>
                        <a href="{$link_delete}" 
onMouseover="window.status='{$lang_delete_text}';return true;" 
onMouseout="window.status='';return true;">
                                <xsl:value-of select="text_delete"/>
                        </a>
-                               </td>
-                       </tr>
+               </td>
+       </tr>
 </xsl:template>
 
 
 <!-- add attribute / edit attribute -->
 
 <xsl:template match="edit_attrib" xmlns:php="http://php.net/xsl";>
-               <div align="left">
+       <div align="left">
 
-                       <xsl:variable name="form_action">
-                               <xsl:value-of select="form_action"/>
-                       </xsl:variable>
-                       <form method="post" action="{$form_action}">
+               <xsl:variable name="form_action">
+                       <xsl:value-of select="form_action"/>
+               </xsl:variable>
+               <form method="post" action="{$form_action}">
                
-               <table cellpadding="2" cellspacing="2" width="80%" 
align="center">
-                       <xsl:choose>
-                               <xsl:when test="msgbox_data != ''">
-                                       <tr>
-                                               <td align="left" colspan="3">
-                                                       <xsl:call-template 
name="msgbox"/>
-                                               </td>
-                                       </tr>
-                               </xsl:when>
-                       </xsl:choose>
+                       <table cellpadding="2" cellspacing="2" width="80%" 
align="center">
+                               <xsl:choose>
+                                       <xsl:when test="msgbox_data != ''">
+                                               <tr>
+                                                       <td align="left" 
colspan="3">
+                                                               
<xsl:call-template name="msgbox"/>
+                                                       </td>
+                                               </tr>
+                                       </xsl:when>
+                               </xsl:choose>
                        
 
-                       <tr>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of 
select="php:function('lang', 'appname')" />
-                               </td>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of select="appname"/>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of select="lang_location"/>
-                                       <xsl:value-of 
select="php:function('lang', 'location')" />
-                               </td>
-                               <td align="left">
-                                       <xsl:choose>
-                                               <xsl:when test="value_location 
!= ''">
-                                                       <xsl:value-of 
select="value_location"/>
-                                                       <input type="hidden" 
name="location" value="{value_location}" />
-                                               </xsl:when>
-                                               <xsl:otherwise>
-                                                       <xsl:call-template 
name="select_location"/>
-                                               </xsl:otherwise>
-                                       </xsl:choose>
-                               </td>
-                       </tr>
-                       <xsl:choose>
-                               <xsl:when test="value_id != ''">
-                                       <tr>
-                                               <td valign="top">
-                                       <xsl:value-of 
select="php:function('lang', 'Attribute ID')" />
-                                               </td>
-                                               <td>
-                                                       <xsl:value-of 
select="value_id"/>
-                                               </td>
-                                       </tr>
-                               </xsl:when>
-                       </xsl:choose>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of 
select="php:function('lang', 'column name')" />
-                               </td>
-                               <td>
-                                       <input type="text" 
name="values[column_name]" value="{value_column_name}" maxlength="20">
-                                               <xsl:attribute name="title">
-                                                   <xsl:value-of 
select="php:function('lang', 'enter the name for the column')" />
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of 
select="php:function('lang', 'input text')" />
-                               </td>
-                               <td>
-                                       <input type="text" 
name="values[input_text]" value="{value_input_text}" maxlength="20">
-                                               <xsl:attribute name="title">
-                                                   <xsl:value-of 
select="php:function('lang', 'enter the input text for records')" />
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of 
select="php:function('lang', 'statustext')" />
-                               </td>
-                               <td>
-                                       <textarea cols="60" rows="10" 
name="values[statustext]" wrap="virtual">
-                                               <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="php:function('lang', 'Enter a statustext for the inputfield in forms')" 
/>
-                                               </xsl:attribute>
-                                               <xsl:value-of 
select="value_statustext"/>               
-                                       </textarea>
+                               <tr>
+                                       <td class="th_text" align="left">
+                                               <xsl:value-of 
select="php:function('lang', 'appname')" />
+                                       </td>
+                                       <td class="th_text" align="left">
+                                               <xsl:value-of select="appname"/>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td class="th_text" align="left">
+                                               <xsl:value-of 
select="lang_location"/>
+                                               <xsl:value-of 
select="php:function('lang', 'location')" />
+                                       </td>
+                                       <td align="left">
+                                               <xsl:choose>
+                                                       <xsl:when 
test="value_location != ''">
+                                                               <xsl:value-of 
select="value_location"/>
+                                                               <input 
type="hidden" name="location" value="{value_location}" />
+                                                       </xsl:when>
+                                                       <xsl:otherwise>
+                                                               
<xsl:call-template name="select_location"/>
+                                                       </xsl:otherwise>
+                                               </xsl:choose>
+                                       </td>
+                               </tr>
+                               <xsl:choose>
+                                       <xsl:when test="value_id != ''">
+                                               <tr>
+                                                       <td valign="top">
+                                                               <xsl:value-of 
select="php:function('lang', 'Attribute ID')" />
+                                                       </td>
+                                                       <td>
+                                                               <xsl:value-of 
select="value_id"/>
+                                                       </td>
+                                               </tr>
+                                       </xsl:when>
+                               </xsl:choose>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="php:function('lang', 'column name')" />
+                                       </td>
+                                       <td>
+                                               <input type="text" 
name="values[column_name]" value="{value_column_name}" maxlength="20">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="php:function('lang', 'enter the name for the column')" />
+                                                       </xsl:attribute>
+                                               </input>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="php:function('lang', 'input text')" />
+                                       </td>
+                                       <td>
+                                               <input type="text" 
name="values[input_text]" value="{value_input_text}" maxlength="20">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="php:function('lang', 'enter the input text for records')" />
+                                                       </xsl:attribute>
+                                               </input>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="php:function('lang', 'statustext')" />
+                                       </td>
+                                       <td>
+                                               <textarea cols="60" rows="10" 
name="values[statustext]" wrap="virtual">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="php:function('lang', 'Enter a statustext for the inputfield in forms')" 
/>
+                                                       </xsl:attribute>
+                                                       <xsl:value-of 
select="value_statustext"/>
+                                               </textarea>
 
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of 
select="php:function('lang', 'group')" />
-                               </td>
-                               <td valign="top">
-                                       <select name="values[group_id]" 
class="forms">
-                                               <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="php:function('lang', 'select a group')" />
-                                               </xsl:attribute>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="php:function('lang', 'group')" />
+                                       </td>
+                                       <td valign="top">
+                                               <select name="values[group_id]" 
class="forms">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="php:function('lang', 'select a group')" />
+                                                       </xsl:attribute>
                                                        <option value="">
-                                                       <xsl:value-of 
select="php:function('lang', 'no group')" />
-                                               </option>
-                                               <xsl:apply-templates 
select="attrib_group_list/options"/>
-                                       </select>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of 
select="php:function('lang', 'datatype')" />
-                               </td>
-                               <td valign="top">
+                                                               <xsl:value-of 
select="php:function('lang', 'no group')" />
+                                                       </option>
+                                                       <xsl:apply-templates 
select="attrib_group_list/options"/>
+                                               </select>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="php:function('lang', 'datatype')" />
+                                       </td>
+                                       <td valign="top">
                                                <xsl:variable 
name="lang_datatype_statustext">
                                                        <xsl:value-of 
select="lang_datatype_statustext"/>
                                                </xsl:variable>
-                                       <select 
name="values[column_info][type]" class="forms">
+                                               <select 
name="values[column_info][type]" class="forms">
                                                        <option value="">
                                                                <xsl:value-of 
select="lang_no_datatype"/>
                                                        </option>
-                                               <xsl:apply-templates 
select="datatype_list"/>
-                                       </select>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of select="lang_precision"/>
-                               </td>
-                               <td>
-                                       <input type="text" 
name="values[column_info][precision]" value="{value_precision}">
-                                               <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="lang_precision_statustext"/>
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of select="lang_scale"/>
-                               </td>
-                               <td>
-                                       <input type="text" 
name="values[column_info][scale]" value="{value_scale}">
-                                               <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="lang_scale_statustext"/>
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of select="lang_default"/>
-                               </td>
-                               <td>
-                                       <input type="text" 
name="values[column_info][default]" value="{value_default}">
-                                               <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="lang_default_statustext"/>
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of select="lang_nullable"/>
-                               </td>
-                               <td valign="top">
+                                                       <xsl:apply-templates 
select="datatype_list"/>
+                                               </select>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="lang_precision"/>
+                                       </td>
+                                       <td>
+                                               <input type="text" 
name="values[column_info][precision]" value="{value_precision}">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="lang_precision_statustext"/>
+                                                       </xsl:attribute>
+                                               </input>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="lang_scale"/>
+                                       </td>
+                                       <td>
+                                               <input type="text" 
name="values[column_info][scale]" value="{value_scale}">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="lang_scale_statustext"/>
+                                                       </xsl:attribute>
+                                               </input>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="lang_default"/>
+                                       </td>
+                                       <td>
+                                               <input type="text" 
name="values[column_info][default]" value="{value_default}">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="lang_default_statustext"/>
+                                                       </xsl:attribute>
+                                               </input>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="lang_nullable"/>
+                                       </td>
+                                       <td valign="top">
                                                <xsl:variable 
name="lang_nullable_statustext">
                                                        <xsl:value-of 
select="lang_nullable_statustext"/>
                                                </xsl:variable>
-                                       <select 
name="values[column_info][nullable]" class="forms">
+                                               <select 
name="values[column_info][nullable]" class="forms">
                                                        <option value="">
                                                                <xsl:value-of 
select="lang_select_nullable"/>
                                                        </option>
-                                               <xsl:apply-templates 
select="nullable_list"/>
-                                       </select>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td>
-                                       <xsl:value-of select="lang_list"/>
-                               </td>
-                               <td>
-                                       <xsl:choose>
+                                                       <xsl:apply-templates 
select="nullable_list"/>
+                                               </select>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <xsl:value-of 
select="lang_list"/>
+                                       </td>
+                                       <td>
+                                               <xsl:choose>
                                                        <xsl:when 
test="value_list = 1">
                                                                <input 
type="checkbox" name="values[list]" value="1" checked="checked" 
onMouseout="window.status='';return true;">
                                                                        
<xsl:attribute name="title">
@@ -423,15 +423,15 @@
                                                                        
</xsl:attribute>
                                                                </input>
                                                        </xsl:otherwise>
-                                       </xsl:choose>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td>
-                                       <xsl:value-of 
select="lang_include_search"/>
-                               </td>
-                               <td>
-                                       <xsl:choose>
+                                               </xsl:choose>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <xsl:value-of 
select="lang_include_search"/>
+                                       </td>
+                                       <td>
+                                               <xsl:choose>
                                                        <xsl:when 
test="value_search = 1">
                                                                <input 
type="checkbox" name="values[search]" value="1" checked="checked">
                                                                        
<xsl:attribute name="title">
@@ -446,15 +446,15 @@
                                                                        
</xsl:attribute>
                                                                </input>
                                                        </xsl:otherwise>
-                                       </xsl:choose>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td>
-                                       <xsl:value-of select="lang_history"/>
-                               </td>
-                               <td>
-                                       <xsl:choose>
+                                               </xsl:choose>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <xsl:value-of 
select="lang_history"/>
+                                       </td>
+                                       <td>
+                                               <xsl:choose>
                                                        <xsl:when 
test="value_history = 1">
                                                                <input 
type="checkbox" name="values[history]" value="1" checked="checked">
                                                                        
<xsl:attribute name="title">
@@ -469,15 +469,15 @@
                                                                        
</xsl:attribute>
                                                                </input>
                                                        </xsl:otherwise>
-                                       </xsl:choose>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td>
-                                       <xsl:value-of select="lang_disabled"/>
-                               </td>
-                               <td>
-                                       <xsl:choose>
+                                               </xsl:choose>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <xsl:value-of 
select="lang_disabled"/>
+                                       </td>
+                                       <td>
+                                               <xsl:choose>
                                                        <xsl:when 
test="value_disabled = 1">
                                                                <input 
type="checkbox" name="values[disabled]" value="1" checked="checked">
                                                                        
<xsl:attribute name="title">
@@ -492,51 +492,109 @@
                                                                        
</xsl:attribute>
                                                                </input>
                                                        </xsl:otherwise>
-                                       </xsl:choose>
-                               </td>
-                       </tr>
+                                               </xsl:choose>
+                                       </td>
+                               </tr>
        
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of select="lang_helpmsg"/>
-                               </td>
-                               <td>
-                                       <textarea cols="60" rows="10" 
name="values[helpmsg]" wrap="virtual">
-                                               <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="lang_helpmsg_statustext"/>
-                                               </xsl:attribute>
-                                               <xsl:value-of 
select="value_helpmsg"/>          
-                                       </textarea>
-                               </td>
-                       </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="lang_helpmsg"/>
+                                       </td>
+                                       <td>
+                                               <textarea cols="60" rows="10" 
name="values[helpmsg]" wrap="virtual">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="lang_helpmsg_statustext"/>
+                                                       </xsl:attribute>
+                                                       <xsl:value-of 
select="value_helpmsg"/>
+                                               </textarea>
+                                       </td>
+                               </tr>
        
-                       <xsl:choose>
-                               <xsl:when test="multiple_choice != ''">
-                                       <tr>
-                                               <td valign="top">
-                                                       <xsl:value-of 
select="lang_choice"/>
-                                               </td>
-                                               <td align="right">
-                                                       <xsl:call-template 
name="choice"/>
-                                               </td>
-                                       </tr>
-                               </xsl:when>
-                       </xsl:choose>
-                       <tr height="50">
-                               <td>
+                               <xsl:choose>
+                                       <xsl:when test="multiple_choice = 1">
+                                               <tr>
+                                                       <td valign="top">
+                                                               <xsl:value-of 
select="lang_choice"/>
+                                                       </td>
+                                                       <td align="right">
+                                                               
<xsl:call-template name="choice"/>
+                                                       </td>
+                                               </tr>
+                                       </xsl:when>
+                               </xsl:choose>
+                               <xsl:choose>
+                                       <xsl:when test="custom_get_list = 1">
+                                               <tr>
+                                                       <td>
+                                                               <xsl:value-of 
select="php:function('lang', 'custom get list function')"/>
+                                                       </td>
+                                                       <td>
+                                                               <input 
type="text" name="values[get_list_function]" value="{value_get_list_function}" 
size="60">
+                                                                       
<xsl:attribute name="title">
+                                                                               
<xsl:text>&lt;app&gt;.&lt;class&gt;.&lt;function&gt;</xsl:text>
+                                                                       
</xsl:attribute>
+                                                               </input>
+                                                       </td>
+                                               </tr>
+                                               <tr>
+                                                       <td>
+                                                               <xsl:value-of 
select="php:function('lang', 'get list function input')"/>
+                                                       </td>
+                                                       <td>
+                                                               <textarea 
cols="60" rows="10" name="values[get_list_function_input]">
+                                                                       
<xsl:attribute name="title">
+                                                                               
<xsl:text>parameter1 = value1, parameter2 = value2...</xsl:text>
+                                                                       
</xsl:attribute>
+                                                                       
<xsl:value-of select="value_get_list_function_input"/>
+                                                               </textarea>
+                                                       </td>
+                                               </tr>
+                                       </xsl:when>
+                               </xsl:choose>
+                               <xsl:choose>
+                                       <xsl:when test="custom_get_single = 1">
+                                               <tr>
+                                                       <td>
+                                                               <xsl:value-of 
select="php:function('lang', 'custom get single function')"/>
+                                                       </td>
+                                                       <td>
+                                                               <input 
type="text" name="values[get_single_function]" 
value="{value_get_single_function}" size="60">
+                                                                       
<xsl:attribute name="title">
+                                                                               
<xsl:text>&lt;app&gt;.&lt;class&gt;.&lt;function&gt;</xsl:text>
+                                                                       
</xsl:attribute>
+                                                               </input>
+                                                       </td>
+                                               </tr>
+                                               <tr>
+                                                       <td>
+                                                               <xsl:value-of 
select="php:function('lang', 'get single function input')"/>
+                                                       </td>
+                                                       <td>
+                                                       <textarea cols="60" 
rows="10" name="values[get_single_function_input]">
+                                                               <xsl:attribute 
name="title">
+                                                                       
<xsl:text>parameter1 = value1, parameter2 = value2...</xsl:text>
+                                                               </xsl:attribute>
+                                                               <xsl:value-of 
select="value_get_single_function_input"/>
+                                                       </textarea>
+                                                       </td>
+                                               </tr>
+                                       </xsl:when>
+                               </xsl:choose>
+                               <tr height="50">
+                                       <td>
                                                <xsl:variable name="lang_save">
                                                        <xsl:value-of 
select="lang_save"/>
                                                </xsl:variable>
-                                       <input type="submit" 
name="values[save]" value="{$lang_save}">
-                                               <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="lang_save_attribtext"/>
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                       </tr>
-               </table>
-                       </form>
-                       <table>
+                                               <input type="submit" 
name="values[save]" value="{$lang_save}">
+                                                       <xsl:attribute 
name="title">
+                                                               <xsl:value-of 
select="lang_save_attribtext"/>
+                                                       </xsl:attribute>
+                                               </input>
+                                       </td>
+                               </tr>
+                       </table>
+               </form>
+               <table>
                        <tr>
                                <td>
                                        <xsl:variable name="done_action">
@@ -555,7 +613,7 @@
                                </td>
                        </tr>
                </table>
-               </div>
+       </div>
 </xsl:template>
 
 <!-- add attribute group / edit attribute group -->
@@ -705,38 +763,38 @@
 
 <xsl:template match="list_custom_function">
                
-               <table width="100%" cellpadding="2" cellspacing="2" 
align="center">
-                       <tr>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of select="lang_appname"/>
-                                       <xsl:text>: </xsl:text>
-                                       <xsl:value-of select="appname"/>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td align="left">
-                                       <xsl:call-template 
name="filter_location"/>
-                               </td>
+       <table width="100%" cellpadding="2" cellspacing="2" align="center">
+               <tr>
+                       <td class="th_text" align="left">
+                               <xsl:value-of select="lang_appname"/>
+                               <xsl:text>: </xsl:text>
+                               <xsl:value-of select="appname"/>
+                       </td>
+               </tr>
+               <tr>
+                       <td align="left">
+                               <xsl:call-template name="filter_location"/>
+                       </td>
 
-                               <td align="right">
-                                       <xsl:call-template name="search_field"/>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td colspan="3" width="100%">
-                                       <xsl:call-template name="nextmatchs"/>
-                               </td>
-                       </tr>
-               </table>
-               <table width="100%" cellpadding="2" cellspacing="2" 
align="center"  class="pure-table pure-table-bordered">
-                       <xsl:apply-templates 
select="table_header_custom_function"/>
-                       <xsl:choose>
-                               <xsl:when test="values_custom_function != ''">
-                                       <xsl:apply-templates 
select="values_custom_function"/>
-                               </xsl:when>
-                       </xsl:choose>
-                       <xsl:apply-templates select="table_add"/>
-               </table>
+                       <td align="right">
+                               <xsl:call-template name="search_field"/>
+                       </td>
+               </tr>
+               <tr>
+                       <td colspan="3" width="100%">
+                               <xsl:call-template name="nextmatchs"/>
+                       </td>
+               </tr>
+       </table>
+       <table width="100%" cellpadding="2" cellspacing="2" align="center"  
class="pure-table pure-table-bordered">
+               <xsl:apply-templates select="table_header_custom_function"/>
+               <xsl:choose>
+                       <xsl:when test="values_custom_function != ''">
+                               <xsl:apply-templates 
select="values_custom_function"/>
+                       </xsl:when>
+               </xsl:choose>
+               <xsl:apply-templates select="table_add"/>
+       </table>
 </xsl:template>
 <xsl:template match="table_header_custom_function">
        <xsl:variable name="sort_sorting">
@@ -745,36 +803,36 @@
        <xsl:variable name="sort_name">
                <xsl:value-of select="sort_name"/>
        </xsl:variable>
-               <tr class="th">
-                       <td class="th_text" width="10%" align="left">
+       <tr class="th">
+               <td class="th_text" width="10%" align="left">
                        <a href="{$sort_name}">
                                <xsl:value-of select="lang_name"/>
                        </a>
-                       </td>
-                       <td class="th_text" width="20%" align="left">
-                               <xsl:value-of select="lang_descr"/>
-                       </td>
-                       <td class="th_text" width="5%" align="center">
-                               <xsl:value-of select="lang_pre_commit"/>
-                       </td>
-                       <td class="th_text" width="5%" align="center">
-                               <xsl:value-of select="lang_client_side"/>
-                       </td>
-                       <td class="th_text" width="5%" align="center">
-                               <xsl:value-of select="lang_active"/>
-                       </td>
-                       <td class="th_text" width="10%" align="center">
+               </td>
+               <td class="th_text" width="20%" align="left">
+                       <xsl:value-of select="lang_descr"/>
+               </td>
+               <td class="th_text" width="5%" align="center">
+                       <xsl:value-of select="lang_pre_commit"/>
+               </td>
+               <td class="th_text" width="5%" align="center">
+                       <xsl:value-of select="lang_client_side"/>
+               </td>
+               <td class="th_text" width="5%" align="center">
+                       <xsl:value-of select="lang_active"/>
+               </td>
+               <td class="th_text" width="10%" align="center">
                        <a href="{$sort_sorting}">
                                <xsl:value-of select="lang_sorting"/>
                        </a>
-                       </td>
-                       <td class="th_text" width="5%" align="center">
-                               <xsl:value-of select="lang_edit"/>
-                       </td>
-                       <td class="th_text" width="5%" align="center">
-                               <xsl:value-of select="lang_delete"/>
-                       </td>
-               </tr>
+               </td>
+               <td class="th_text" width="5%" align="center">
+                       <xsl:value-of select="lang_edit"/>
+               </td>
+               <td class="th_text" width="5%" align="center">
+                       <xsl:value-of select="lang_delete"/>
+               </td>
+       </tr>
 </xsl:template>
 
 <xsl:template match="values_custom_function"> 
@@ -790,166 +848,166 @@
        <xsl:variable name="lang_delete_text">
                <xsl:value-of select="lang_delete_text"/>
        </xsl:variable>
-                       <tr>
-                               <xsl:attribute name="class">
-                                       <xsl:choose>
-                                               <xsl:when test="@class">
-                                                       <xsl:value-of 
select="@class"/>
-                                               </xsl:when>
-                                               <xsl:when test="position() mod 
2 = 0">
-                                                       
<xsl:text>row_off</xsl:text>
-                                               </xsl:when>
-                                               <xsl:otherwise>
-                                                       
<xsl:text>row_on</xsl:text>
-                                               </xsl:otherwise>
-                                       </xsl:choose>
-                               </xsl:attribute>
-                               <td align="left">
-                                       <xsl:value-of select="file_name"/>
-                               </td>
-                               <td>
-                                       <xsl:value-of select="descr"/>
-                               </td>
-                               <td align = 'center'>
-                                       <xsl:value-of select="pre_commit"/>
-                               </td>
-                               <td align = 'center'>
-                                       <xsl:value-of select="client_side"/>
-                               </td>
-                               <td align = 'center'>
-                                       <xsl:value-of select="active"/>
-                               </td>
-                               <td>
-                                       <table align="left">
-                                               <tr>
-                                                       <td>
-                                                               <xsl:value-of 
select="sorting"/>
-                                                       </td>
+       <tr>
+               <xsl:attribute name="class">
+                       <xsl:choose>
+                               <xsl:when test="@class">
+                                       <xsl:value-of select="@class"/>
+                               </xsl:when>
+                               <xsl:when test="position() mod 2 = 0">
+                                       <xsl:text>row_off</xsl:text>
+                               </xsl:when>
+                               <xsl:otherwise>
+                                       <xsl:text>row_on</xsl:text>
+                               </xsl:otherwise>
+                       </xsl:choose>
+               </xsl:attribute>
+               <td align="left">
+                       <xsl:value-of select="file_name"/>
+               </td>
+               <td>
+                       <xsl:value-of select="descr"/>
+               </td>
+               <td align = 'center'>
+                       <xsl:value-of select="pre_commit"/>
+               </td>
+               <td align = 'center'>
+                       <xsl:value-of select="client_side"/>
+               </td>
+               <td align = 'center'>
+                       <xsl:value-of select="active"/>
+               </td>
+               <td>
+                       <table align="left">
+                               <tr>
+                                       <td>
+                                               <xsl:value-of select="sorting"/>
+                                       </td>
 
-                                                       <td align="left">
+                                       <td align="left">
                                                <xsl:variable name="link_up">
                                                        <xsl:value-of 
select="link_up"/>
                                                </xsl:variable>
                                                <a href="{$link_up}" 
onMouseover="window.status='{$lang_up_text}';return true;" 
onMouseout="window.status='';return true;">
                                                        <xsl:value-of 
select="text_up"/>
                                                </a>
-                                                               <xsl:text> | 
</xsl:text>
+                                               <xsl:text> | </xsl:text>
                                                <xsl:variable name="link_down">
                                                        <xsl:value-of 
select="link_down"/>
                                                </xsl:variable>
                                                <a href="{$link_down}" 
onMouseover="window.status='{$lang_down_text}';return true;" 
onMouseout="window.status='';return true;">
                                                        <xsl:value-of 
select="text_down"/>
                                                </a>
-                                                       </td>
+                                       </td>
 
-                                               </tr>
-                                       </table>
-                               </td>
-                               <td align="center">
+                               </tr>
+                       </table>
+               </td>
+               <td align="center">
                        <xsl:variable name="link_edit">
                                <xsl:value-of select="link_edit"/>
                        </xsl:variable>
                        <a href="{$link_edit}" 
onMouseover="window.status='{$lang_edit_text}';return true;" 
onMouseout="window.status='';return true;">
                                <xsl:value-of select="text_edit"/>
                        </a>
-                               </td>
-                               <td align="center">
+               </td>
+               <td align="center">
                        <xsl:variable name="link_delete">
                                <xsl:value-of select="link_delete"/>
                        </xsl:variable>
                        <a href="{$link_delete}" 
onMouseover="window.status='{$lang_delete_text}';return true;" 
onMouseout="window.status='';return true;">
                                <xsl:value-of select="text_delete"/>
                        </a>
-                               </td>
-                       </tr>
+               </td>
+       </tr>
 </xsl:template>
 
 
 <!-- add custom_function / edit custom_function -->
 
 <xsl:template match="edit_custom_function" xmlns:php="http://php.net/xsl";>
-               <div align="left">
+       <div align="left">
 
                <form method="post" action="{form_action}">
-               <table cellpadding="2" cellspacing="2" width="80%" 
align="center">
-                       <xsl:choose>
-                               <xsl:when test="msgbox_data != ''">
-                                       <tr>
-                                               <td align="left" colspan="3">
-                                                       <xsl:call-template 
name="msgbox"/>
-                                               </td>
-                                       </tr>
-                               </xsl:when>
-                       </xsl:choose>
+                       <table cellpadding="2" cellspacing="2" width="80%" 
align="center">
+                               <xsl:choose>
+                                       <xsl:when test="msgbox_data != ''">
+                                               <tr>
+                                                       <td align="left" 
colspan="3">
+                                                               
<xsl:call-template name="msgbox"/>
+                                                       </td>
+                                               </tr>
+                                       </xsl:when>
+                               </xsl:choose>
 
-                       <tr>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of select="lang_appname"/>
-                               </td>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of select="appname"/>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of select="lang_location"/>
-                               </td>
-                               <td class="th_text" align="left">
-                                       <xsl:value-of select="location"/>
-                               </td>
-                       </tr>
-                       <xsl:choose>
-                               <xsl:when test="value_id != ''">
-                                       <tr>
-                                               <td valign="top">
-                                                       <xsl:value-of 
select="lang_id"/>
-                                               </td>
-                                               <td>
-                                                       <xsl:value-of 
select="value_id"/>
-                                               </td>
-                                       </tr>
-                               </xsl:when>
-                       </xsl:choose>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of select="lang_descr"/>
-                               </td>
-                               <td>
-                                       <textarea cols="60" rows="10" 
name="values[descr]" wrap="virtual" onMouseout="window.status='';return true;">
-                                               <xsl:attribute 
name="onMouseover">
-                                                       
<xsl:text>window.status='</xsl:text>
+                               <tr>
+                                       <td class="th_text" align="left">
+                                               <xsl:value-of 
select="lang_appname"/>
+                                       </td>
+                                       <td class="th_text" align="left">
+                                               <xsl:value-of select="appname"/>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td class="th_text" align="left">
+                                               <xsl:value-of 
select="lang_location"/>
+                                       </td>
+                                       <td class="th_text" align="left">
+                                               <xsl:value-of 
select="location"/>
+                                       </td>
+                               </tr>
+                               <xsl:choose>
+                                       <xsl:when test="value_id != ''">
+                                               <tr>
+                                                       <td valign="top">
+                                                               <xsl:value-of 
select="lang_id"/>
+                                                       </td>
+                                                       <td>
+                                                               <xsl:value-of 
select="value_id"/>
+                                                       </td>
+                                               </tr>
+                                       </xsl:when>
+                               </xsl:choose>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="lang_descr"/>
+                                       </td>
+                                       <td>
+                                               <textarea cols="60" rows="10" 
name="values[descr]" wrap="virtual" onMouseout="window.status='';return true;">
+                                                       <xsl:attribute 
name="onMouseover">
+                                                               
<xsl:text>window.status='</xsl:text>
                                                                <xsl:value-of 
select="lang_descr_custom_functiontext"/>
-                                                       <xsl:text>'; return 
true;</xsl:text>
-                                               </xsl:attribute>
-                                               <xsl:value-of 
select="value_descr"/>            
-                                       </textarea>
+                                                               <xsl:text>'; 
return true;</xsl:text>
+                                                       </xsl:attribute>
+                                                       <xsl:value-of 
select="value_descr"/>
+                                               </textarea>
 
-                               </td>
-                       </tr>
-                       <tr>
-                               <td valign="top">
-                                       <xsl:value-of 
select="lang_custom_function"/>
-                               </td>
-                               <td valign="top">
-                                       <select 
name="values[custom_function_file]" class="forms">
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td valign="top">
+                                               <xsl:value-of 
select="lang_custom_function"/>
+                                       </td>
+                                       <td valign="top">
+                                               <select 
name="values[custom_function_file]" class="forms">
                                                        <option value="">
                                                                <xsl:value-of 
select="lang_no_custom_function"/>
                                                        </option>
-                                               <xsl:apply-templates 
select="custom_function_list"/>
-                                       </select>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td>
-                                       <xsl:value-of select="lang_active"/>
-                               </td>
-                               <td>
-                                       <xsl:choose>
+                                                       <xsl:apply-templates 
select="custom_function_list"/>
+                                               </select>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <xsl:value-of 
select="lang_active"/>
+                                       </td>
+                                       <td>
+                                               <xsl:choose>
                                                        <xsl:when 
test="value_active = 1">
                                                                <input 
type="checkbox" name="values[active]" value="1" checked="checked" 
onMouseout="window.status='';return true;">
                                                                        
<xsl:attribute name="onMouseover">
                                                                                
<xsl:text>window.status='</xsl:text>
-                                                                               
        <xsl:value-of select="lang_active_statustext"/>
+                                                                               
<xsl:value-of select="lang_active_statustext"/>
                                                                                
<xsl:text>'; return true;</xsl:text>
                                                                        
</xsl:attribute>
                                                                </input>
@@ -958,64 +1016,64 @@
                                                                <input 
type="checkbox" name="values[active]" value="1" 
onMouseout="window.status='';return true;">
                                                                        
<xsl:attribute name="onMouseover">
                                                                                
<xsl:text>window.status='</xsl:text>
-                                                                               
        <xsl:value-of select="lang_active_statustext"/>
+                                                                               
<xsl:value-of select="lang_active_statustext"/>
                                                                                
<xsl:text>'; return true;</xsl:text>
                                                                        
</xsl:attribute>
                                                                </input>
                                                        </xsl:otherwise>
-                                       </xsl:choose>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td>
-                                       <xsl:value-of 
select="php:function('lang', 'pre commit')"/>
-                               </td>
-                               <td>
-                                       <input type="checkbox" 
name="values[pre_commit]" value="1">
-                                               <xsl:attribute name="title">
-                                                       <xsl:text>otherwise: 
post commit</xsl:text>
-                                               </xsl:attribute>
-                                               <xsl:if test="value_pre_commit 
= '1'">
-                                                       <xsl:attribute 
name="checked">
-                                                               
<xsl:text>checked</xsl:text>
-                                               </xsl:attribute>
-                                               </xsl:if>
-                                       </input>
-                               </td>
-                       </tr>
-                       <tr>
-                               <td>
-                                       <xsl:value-of 
select="php:function('lang', 'client-side')"/>
-                               </td>
-                               <td>
-                                       <input type="checkbox" 
name="values[client_side]" value="1">
-                                               <xsl:attribute name="title">
-                                                       <xsl:text>otherwise: 
server-side</xsl:text>
-                                               </xsl:attribute>
-                                               <xsl:if test="value_client_side 
= '1'">
-                                                       <xsl:attribute 
name="checked">
-                                                               
<xsl:text>checked</xsl:text>
-                                               </xsl:attribute>
-                                               </xsl:if>
-                                       </input>
-                               </td>
-                       </tr>
-                       <tr height="50">
-                               <td>
+                                               </xsl:choose>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <xsl:value-of 
select="php:function('lang', 'pre commit')"/>
+                                       </td>
+                                       <td>
+                                               <input type="checkbox" 
name="values[pre_commit]" value="1">
+                                                       <xsl:attribute 
name="title">
+                                                               
<xsl:text>otherwise: post commit</xsl:text>
+                                                       </xsl:attribute>
+                                                       <xsl:if 
test="value_pre_commit = '1'">
+                                                               <xsl:attribute 
name="checked">
+                                                                       
<xsl:text>checked</xsl:text>
+                                                               </xsl:attribute>
+                                                       </xsl:if>
+                                               </input>
+                                       </td>
+                               </tr>
+                               <tr>
+                                       <td>
+                                               <xsl:value-of 
select="php:function('lang', 'client-side')"/>
+                                       </td>
+                                       <td>
+                                               <input type="checkbox" 
name="values[client_side]" value="1">
+                                                       <xsl:attribute 
name="title">
+                                                               
<xsl:text>otherwise: server-side</xsl:text>
+                                                       </xsl:attribute>
+                                                       <xsl:if 
test="value_client_side = '1'">
+                                                               <xsl:attribute 
name="checked">
+                                                                       
<xsl:text>checked</xsl:text>
+                                                               </xsl:attribute>
+                                                       </xsl:if>
+                                               </input>
+                                       </td>
+                               </tr>
+                               <tr height="50">
+                                       <td>
                                                <xsl:variable name="lang_save">
                                                        <xsl:value-of 
select="lang_save"/>
                                                </xsl:variable>
-                                       <input type="submit" 
name="values[save]" value="{$lang_save}" onMouseout="window.status='';return 
true;">
-                                               <xsl:attribute 
name="onMouseover">
-                                                       
<xsl:text>window.status='</xsl:text>
+                                               <input type="submit" 
name="values[save]" value="{$lang_save}" onMouseout="window.status='';return 
true;">
+                                                       <xsl:attribute 
name="onMouseover">
+                                                               
<xsl:text>window.status='</xsl:text>
                                                                <xsl:value-of 
select="lang_save_custom_functiontext"/>
-                                                       <xsl:text>'; return 
true;</xsl:text>
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                       </tr>
-               </table>
-       </form>
+                                                               <xsl:text>'; 
return true;</xsl:text>
+                                                       </xsl:attribute>
+                                               </input>
+                                       </td>
+                               </tr>
+                       </table>
+               </form>
                <table cellpadding="2" cellspacing="2" width="80%" 
align="center">
                        <tr>
                                <td>
@@ -1029,7 +1087,7 @@
                                                <input type="submit" 
name="done" value="{$lang_done}" onMouseout="window.status='';return true;">
                                                        <xsl:attribute 
name="onMouseover">
                                                                
<xsl:text>window.status='</xsl:text>
-                                                                       
<xsl:value-of select="lang_done_custom_functiontext"/>
+                                                               <xsl:value-of 
select="lang_done_custom_functiontext"/>
                                                                <xsl:text>'; 
return true;</xsl:text>
                                                        </xsl:attribute>
                                                </input>
@@ -1037,7 +1095,7 @@
                                </td>
                        </tr>
                </table>
-               </div>
+       </div>
 </xsl:template>
 
 
@@ -1048,18 +1106,18 @@
        <xsl:variable name="id">
                <xsl:value-of select="id"/>
        </xsl:variable>
-               <xsl:choose>
-                       <xsl:when test="selected">
+       <xsl:choose>
+               <xsl:when test="selected">
                        <option value="{$id}" selected="selected">
                                <xsl:value-of disable-output-escaping="yes" 
select="name"/>
                        </option>
-                       </xsl:when>
-                       <xsl:otherwise>
+               </xsl:when>
+               <xsl:otherwise>
                        <option value="{$id}">
                                <xsl:value-of disable-output-escaping="yes" 
select="name"/>
                        </option>
-                       </xsl:otherwise>
-               </xsl:choose>
+               </xsl:otherwise>
+       </xsl:choose>
 </xsl:template>
 
 <!-- datatype_list --> 
@@ -1068,29 +1126,29 @@
        <xsl:variable name="id">
                <xsl:value-of select="id"/>
        </xsl:variable>
-               <xsl:choose>
-                       <xsl:when test="selected">
+       <xsl:choose>
+               <xsl:when test="selected">
                        <option value="{$id}" selected="selected">
                                <xsl:value-of disable-output-escaping="yes" 
select="name"/>
                        </option>
-                       </xsl:when>
-                       <xsl:otherwise>
+               </xsl:when>
+               <xsl:otherwise>
                        <option value="{$id}">
                                <xsl:value-of disable-output-escaping="yes" 
select="name"/>
                        </option>
-                       </xsl:otherwise>
-               </xsl:choose>
+               </xsl:otherwise>
+       </xsl:choose>
 </xsl:template>
 
 <!-- custom_function_list -->  
 
 <xsl:template match="custom_function_list">
-               <option value="{id}">
-                       <xsl:if test="selected = 1">
-                               <xsl:attribute name="selected" value="selected" 
/>
-                       </xsl:if>
-                       <xsl:value-of disable-output-escaping="yes" 
select="name"/>
-               </option>
+       <option value="{id}">
+               <xsl:if test="selected = 1">
+                       <xsl:attribute name="selected" value="selected" />
+               </xsl:if>
+               <xsl:value-of disable-output-escaping="yes" select="name"/>
+       </option>
 </xsl:template>
 
 <!-- nullable_list --> 
@@ -1099,41 +1157,41 @@
        <xsl:variable name="id">
                <xsl:value-of select="id"/>
        </xsl:variable>
-               <xsl:choose>
-                       <xsl:when test="selected">
+       <xsl:choose>
+               <xsl:when test="selected">
                        <option value="{$id}" selected="selected">
                                <xsl:value-of disable-output-escaping="yes" 
select="name"/>
                        </option>
-                       </xsl:when>
-                       <xsl:otherwise>
+               </xsl:when>
+               <xsl:otherwise>
                        <option value="{$id}">
                                <xsl:value-of disable-output-escaping="yes" 
select="name"/>
                        </option>
-                       </xsl:otherwise>
-               </xsl:choose>
+               </xsl:otherwise>
+       </xsl:choose>
 </xsl:template>
 
 <xsl:template name="choice" xmlns:php="http://php.net/xsl";>
-                       <table cellpadding="2" cellspacing="2" width="80%" 
align="left">
-                       <xsl:choose>
-                               <xsl:when test="value_choice!=''">
-                                       <tr class="th">
-                                               <td class="th_text" width="5%" 
align="left">
-                                                       <xsl:value-of 
select="php:function('lang', 'id')" />
-                                               </td>
-                                               <td class="th_text" width="40%" 
align="left">
-                                                       <xsl:value-of 
select="php:function('lang', 'value')" />
-                                               </td>
-                                               <td class="th_text" width="40%" 
align="left">
-                                                       <xsl:value-of 
select="php:function('lang', 'title')" />
-                                               </td>
-                                               <td class="th_text" width="5%" 
align="left">
-                                                       <xsl:value-of 
select="php:function('lang', 'order')" />
-                                               </td>
-                                               <td class="th_text" width="10%" 
align="center">
-                                                       <xsl:value-of 
select="lang_delete_value"/>
-                                               </td>
-                                       </tr>
+       <table cellpadding="2" cellspacing="2" width="80%" align="left">
+               <xsl:choose>
+                       <xsl:when test="value_choice!=''">
+                               <tr class="th">
+                                       <td class="th_text" width="5%" 
align="left">
+                                               <xsl:value-of 
select="php:function('lang', 'id')" />
+                                       </td>
+                                       <td class="th_text" width="40%" 
align="left">
+                                               <xsl:value-of 
select="php:function('lang', 'value')" />
+                                       </td>
+                                       <td class="th_text" width="40%" 
align="left">
+                                               <xsl:value-of 
select="php:function('lang', 'title')" />
+                                       </td>
+                                       <td class="th_text" width="5%" 
align="left">
+                                               <xsl:value-of 
select="php:function('lang', 'order')" />
+                                       </td>
+                                       <td class="th_text" width="10%" 
align="center">
+                                               <xsl:value-of 
select="lang_delete_value"/>
+                                       </td>
+                               </tr>
                                <xsl:for-each select="value_choice" >
                                        <tr>
                                                <xsl:attribute name="class">
@@ -1149,71 +1207,71 @@
                                                                </xsl:otherwise>
                                                        </xsl:choose>
                                                </xsl:attribute>
-                                       <td align="left">
-                                               <xsl:value-of select="id"/>
-                                       </td>
-                                       <td align="left">
-                                               <input type="textbox" 
name="values[edit_choice][{id}]" value="{value}" size='15'>
-                                                       <xsl:attribute 
name="title">
-                                                               <xsl:value-of 
select="php:function('lang', 'value')" />
-                                                       </xsl:attribute>
-                                               </input>
-                                       </td>
-                                       <td align="left">
-                                               <input type="textbox" 
name="values[title_choice][{id}]" value="{title}" size='15'>
-                                                       <xsl:attribute 
name="title">
-                                                               <xsl:value-of 
select="php:function('lang', 'value')" />
-                                                       </xsl:attribute>
-                                               </input>
-                                       </td>
-                                       <td align="center">
-                                               <input type="textbox" 
name="values[order_choice][{id}]" value="{order}" size='4'>
-                                                       <xsl:attribute 
name="title">
-                                                               <xsl:value-of 
select="php:function('lang', 'order')" />
-                                                       </xsl:attribute>
-                                               </input>
-                                       </td>
-                                       <td align="center">
-                                               <input type="checkbox" 
name="values[delete_choice][]" value="{id}">
-                                                       <xsl:attribute 
name="onMouseover">
-                                                               
<xsl:text>window.status='</xsl:text>
+                                               <td align="left">
+                                                       <xsl:value-of 
select="id"/>
+                                               </td>
+                                               <td align="left">
+                                                       <input type="textbox" 
name="values[edit_choice][{id}]" value="{value}" size='15'>
+                                                               <xsl:attribute 
name="title">
+                                                                       
<xsl:value-of select="php:function('lang', 'value')" />
+                                                               </xsl:attribute>
+                                                       </input>
+                                               </td>
+                                               <td align="left">
+                                                       <input type="textbox" 
name="values[title_choice][{id}]" value="{title}" size='15'>
+                                                               <xsl:attribute 
name="title">
+                                                                       
<xsl:value-of select="php:function('lang', 'value')" />
+                                                               </xsl:attribute>
+                                                       </input>
+                                               </td>
+                                               <td align="center">
+                                                       <input type="textbox" 
name="values[order_choice][{id}]" value="{order}" size='4'>
+                                                               <xsl:attribute 
name="title">
+                                                                       
<xsl:value-of select="php:function('lang', 'order')" />
+                                                               </xsl:attribute>
+                                                       </input>
+                                               </td>
+                                               <td align="center">
+                                                       <input type="checkbox" 
name="values[delete_choice][]" value="{id}">
+                                                               <xsl:attribute 
name="onMouseover">
+                                                                       
<xsl:text>window.status='</xsl:text>
                                                                        
<xsl:value-of select="//lang_delete_choice_statustext"/>
-                                                               <xsl:text>'; 
return true;</xsl:text>
-                                                       </xsl:attribute>
-                                               </input>
-                                       </td>
+                                                                       
<xsl:text>'; return true;</xsl:text>
+                                                               </xsl:attribute>
+                                                       </input>
+                                               </td>
                                        </tr>
                                </xsl:for-each>
-                               </xsl:when>
-                       </xsl:choose>
-                       <tr>
-                               <td valign="top" colspan='2'>
-                                       <xsl:value-of select="lang_new_value"/>
-                               </td>
-                               <td valign="top">
-                                       <input type="text" 
name="values[new_choice_id]" size = '3'>
-                                               <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="php:function('lang', 'new id for multiple choice')"/>
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                               <td valign="top">
-                                       <input type="text" 
name="values[new_choice]" onMouseout="window.status='';return true;">
-                                               <xsl:attribute 
name="onMouseover">
-                                                       
<xsl:text>window.status='</xsl:text>
-                                                               <xsl:value-of 
select="lang_new_value_statustext"/>
-                                                       <xsl:text>'; return 
true;</xsl:text>
-                                               </xsl:attribute>
-                                       </input>
-                               </td>
-                       </tr>
-                       </table>
+                       </xsl:when>
+               </xsl:choose>
+               <tr>
+                       <td valign="top" colspan='2'>
+                               <xsl:value-of select="lang_new_value"/>
+                       </td>
+                       <td valign="top">
+                               <input type="text" name="values[new_choice_id]" 
size = '3'>
+                                       <xsl:attribute name="title">
+                                               <xsl:value-of 
select="php:function('lang', 'new id for multiple choice')"/>
+                                       </xsl:attribute>
+                               </input>
+                       </td>
+                       <td valign="top">
+                               <input type="text" name="values[new_choice]" 
onMouseout="window.status='';return true;">
+                                       <xsl:attribute name="onMouseover">
+                                               
<xsl:text>window.status='</xsl:text>
+                                               <xsl:value-of 
select="lang_new_value_statustext"/>
+                                               <xsl:text>'; return 
true;</xsl:text>
+                                       </xsl:attribute>
+                               </input>
+                       </td>
+               </tr>
+       </table>
 </xsl:template>
 <xsl:template match="options">
-               <option value="{id}">
-                       <xsl:if test="selected != 0">
-                               <xsl:attribute name="selected" value="selected" 
/>
-                       </xsl:if>
-                       <xsl:value-of disable-output-escaping="yes" 
select="name"/>
-               </option>
+       <option value="{id}">
+               <xsl:if test="selected != 0">
+                       <xsl:attribute name="selected" value="selected" />
+               </xsl:if>
+               <xsl:value-of disable-output-escaping="yes" select="name"/>
+       </option>
 </xsl:template>

Modified: branches/Version-2_0-branch/bim/inc/class.sobimitem.inc.php
===================================================================
--- branches/Version-2_0-branch/bim/inc/class.sobimitem.inc.php 2016-08-30 
10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/bim/inc/class.sobimitem.inc.php 2016-08-30 
11:14:07 UTC (rev 15542)
@@ -53,14 +53,14 @@
                {
                $itemTable = self::bimItemTable;
                $typeTable = self::bimTypeTable;
-                       $sql = "SELECT $itemTable.id, fm_bim_type.name AS type, 
 $itemTable.guid,  $itemTable.xml_representation " .
+                       $sql = "SELECT $itemTable.id, fm_bim_type.name AS type, 
 $itemTable.guid,  $itemTable.json_representation " .
                        "FROM public. $itemTable,  public.$typeTable " .
                                        "WHERE   $itemTable.type = 
$typeTable.id";
                $bimItemArray = array();
                $this->db->query($sql);
                while($this->db->next_record())
                {
-                               $bimItem = new BimItem($this->db->f('id'), 
$this->db->f('guid'), $this->db->f('type'), $this->db->f('xml_representation', 
true));
+                               $bimItem = new BimItem($this->db->f('id'), 
$this->db->f('guid'), $this->db->f('type'), 
$this->db->f('json_representation'));
                        array_push($bimItemArray, $bimItem);
                }
 
@@ -71,7 +71,7 @@
                {
                $itemTable = self::bimItemTable;
                $typeTable = self::bimTypeTable;
-                       $sql = "SELECT $itemTable.id, fm_bim_type.name AS type, 
$itemTable.guid, $itemTable.xml_representation, $itemTable.model " .
+                       $sql = "SELECT $itemTable.id, fm_bim_type.name AS type, 
$itemTable.guid, $itemTable.json_representation, $itemTable.model " .
                        "FROM public.$itemTable,  public.$typeTable " .
                                        "WHERE  $itemTable.type = $typeTable.id 
" .
                                "AND $itemTable.guid ='$bimObjectGuid'";
@@ -83,7 +83,7 @@
                        else
                        {
                        $this->db->next_record();
-                               return new BimItem($this->db->f('id'), 
$this->db->f('guid'), $this->db->f('type'), $this->db->f('xml_representation', 
true), $this->db->f('model'));
+                               return new BimItem($this->db->f('id'), 
$this->db->f('guid'), $this->db->f('type'), 
$this->db->f('json_representation'), $this->db->f('model'));
                }
        }
        
@@ -100,7 +100,7 @@
                $type = $this->db->f('type');
                        $id = $this->db->next_id('fm_bim_item', array('type' => 
$type));
 
-                       $sql = "INSERT INTO " . self::bimItemTable . " (type, 
id, guid, xml_representation, model) values ($type, $id,";
+                       $sql = "INSERT INTO " . self::bimItemTable . " (type, 
id, guid, json_representation, model) values ($type, $id,";
        //      $sql = $sql."(select id from ".self::bimTypeTable." where name 
= '".$bimItem->getType()."'),";
                        $sql = $sql . "'" . $bimItem->getGuid() . "', '" . 
$this->db->db_addslashes($bimItem->getXml()) . "', " . $bimItem->getModelId() . 
")";
                        try
@@ -164,7 +164,7 @@
                        {
                        throw new Exception("Item does not exist!");
                }
-                       $sql = "Update " . self::bimItemTable . " set 
xml_representation='" . $this->db->db_addslashes($bimItem->getXml()) . "' where 
guid='" . $bimItem->getGuid() . "'";
+                       $sql = "Update " . self::bimItemTable . " set 
json_representation='" . $bimItem->getXml() . "' where guid='" . 
$bimItem->getGuid() . "'";
                
                        if(is_null($this->db->query($sql, __LINE__, __FILE__)))
                        {
@@ -191,8 +191,8 @@
                {
                $columnAlias = "attribute_values";
                $itemTable = self::bimItemTable;
-               //$sql = "select 
xpath('descendant-or-self::*[$attribute]/$attribute/text()', (select 
xml_representation from fm_bim_data where guid='$bimItemGuid'))";
-               $sql = "select 
array_to_string(xpath('descendant-or-self::*[$attribute]/$attribute/text()', 
(select xml_representation from $itemTable where guid='$bimItemGuid')), ',') as 
$columnAlias";
+               //$sql = "select 
xpath('descendant-or-self::*[$attribute]/$attribute/text()', (select 
json_representation from fm_bim_data where guid='$bimItemGuid'))";
+               $sql = "select 
array_to_string(xpath('descendant-or-self::*[$attribute]/$attribute/text()', 
(select json_representation from $itemTable where guid='$bimItemGuid')), ',') 
as $columnAlias";
                        $this->db->query($sql, __LINE__, __FILE__);
                        if($this->db->num_rows() == 0)
                        {

Modified: branches/Version-2_0-branch/bim/setup/setup.inc.php
===================================================================
--- branches/Version-2_0-branch/bim/setup/setup.inc.php 2016-08-30 10:38:55 UTC 
(rev 15541)
+++ branches/Version-2_0-branch/bim/setup/setup.inc.php 2016-08-30 11:14:07 UTC 
(rev 15542)
@@ -11,7 +11,7 @@
        * @version $Id: setup.inc.php 6982 2011-02-14 20:01:17Z sigurdne $
        */
        $setup_info['bim']['name']                      = 'bim';
-       $setup_info['bim']['version']           = '0.9.17.510';
+       $setup_info['bim']['version']           = '0.9.17.511';
        $setup_info['bim']['app_order']         = 8;
        $setup_info['bim']['enable']            = 1;
        $setup_info['bim']['app_group']         = 'office';

Modified: branches/Version-2_0-branch/bim/setup/tables_current.inc.php
===================================================================
--- branches/Version-2_0-branch/bim/setup/tables_current.inc.php        
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/bim/setup/tables_current.inc.php        
2016-08-30 11:14:07 UTC (rev 15542)
@@ -50,7 +50,7 @@
                                'id' => array('type' => 'int', 'precision' => 
4, 'nullable' => False),
                                'type' => array('type' => 'int', 'precision' => 
4, 'nullable' => False),
                                'guid' => array('type' => 'varchar', 
'precision' => 50, 'nullable' => False),
-                               'xml_representation' => array('type' => 'xml', 
'nullable' => False),
+                               'json_representation' => array('type' => 
'jsonb', 'nullable' => False),
                                'model' => array('type' => 'int', 'precision' 
=> 4, 'nullable' => False),
                                'p_location_id' => array('type' => 'int', 
'precision' => '4', 'nullable' => True),
                                'p_id' => array('type' => 'int', 'precision' => 
'4', 'nullable' => True),

Modified: branches/Version-2_0-branch/bim/setup/tables_update.inc.php
===================================================================
--- branches/Version-2_0-branch/bim/setup/tables_update.inc.php 2016-08-30 
10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/bim/setup/tables_update.inc.php 2016-08-30 
11:14:07 UTC (rev 15542)
@@ -253,4 +253,54 @@
                        $GLOBALS['setup_info']['bim']['currentver'] = 
'0.9.17.510';
                        return $GLOBALS['setup_info']['bim']['currentver'];
                }
-       }
\ No newline at end of file
+       }
+       /**
+       * Update bim version from 0.9.17.510 to 0.9.17.511
+       */
+       $test[] = '0.9.17.510';
+
+       function bim_upgrade0_9_17_510()
+       {
+               $GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
+
+               $GLOBALS['phpgw_setup']->oProc->AddColumn('fm_bim_item', 
'json_representation', array(
+                       'type' => 'jsonb', 'nullable' => true));
+
+               $GLOBALS['phpgw_setup']->oProc->query("SELECT 
id,location_id,xml_representation FROM fm_bim_item", __LINE__, __FILE__);
+
+               $items = array();
+               while($GLOBALS['phpgw_setup']->oProc->next_record())
+               {
+                       $items[] = array
+                       (
+                               'id'                    => 
(int)$GLOBALS['phpgw_setup']->oProc->f('id'),
+                               'location_id'   => 
(int)$GLOBALS['phpgw_setup']->oProc->f('location_id'),
+                               'xml_representation' => 
$GLOBALS['phpgw_setup']->oProc->f('xml_representation', true),
+                       );
+               }
+
+               $xmlparse = CreateObject('property.XmlToArray');
+               $xmlparse->setEncoding('UTF-8');
+               $xmlparse->setDecodesUTF8Automaticly(false);
+
+               foreach ($items as $item)
+               {
+                       $xmldata = $item['xml_representation'];
+                       $var_result = $xmlparse->parse($xmldata);
+
+                       $jsondata = json_encode($var_result, JSON_HEX_APOS);
+                       $GLOBALS['phpgw_setup']->oProc->query("UPDATE 
fm_bim_item SET json_representation = '{$jsondata}'"
+                       . " WHERE id = {$item['id']} AND location_id = 
{$item['location_id']}", __LINE__, __FILE__);
+               }
+
+               $GLOBALS['phpgw_setup']->oProc->AlterColumn('fm_bim_item', 
'json_representation', array(
+                       'type' => 'jsonb', 'nullable' => False));
+
+               $GLOBALS['phpgw_setup']->oProc->DropColumn('fm_bim_item', 
array(), 'xml_representation');
+
+               if($GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit())
+               {
+                       $GLOBALS['setup_info']['bim']['currentver'] = 
'0.9.17.511';
+                       return $GLOBALS['setup_info']['bim']['currentver'];
+               }
+       }


Property changes on: branches/Version-2_0-branch/booking
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/stavangerkommune/booking:9468-12740,12743-12875,12986
/trunk/booking:14721-14732,14824-14825,14827-14829,14831-14834,14836,14838,14840-14842,14844-14845,14871,14886-14896,14900-14902,14917-14919,14924-14978,14980-15258,15266-15285,15287-15288,15297,15299-15305,15307-15310,15312-15335,15337-15352,15354
   + /branches/stavangerkommune/booking:9468-12740,12743-12875,12986
/trunk/booking:14721-14732,14824-14825,14827-14829,14831-14834,14836,14838,14840-14842,14844-14845,14871,14886-14896,14900-14902,14917-14919,14924-14978,14980-15258,15266-15285,15287-15288,15297,15299-15305,15307-15310,15312-15335,15337-15352,15354,15360-15541

Modified: branches/Version-2_0-branch/booking/inc/class.socommon.inc.php
===================================================================
--- branches/Version-2_0-branch/booking/inc/class.socommon.inc.php      
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/booking/inc/class.socommon.inc.php      
2016-08-30 11:14:07 UTC (rev 15542)
@@ -4,6 +4,8 @@
        abstract class booking_socommon
        {
 
+               protected $db;
+               protected $db2;
                protected $db_null = 'NULL';
                protected $valid_field_types = array(
                        'date' => true,
@@ -41,6 +43,7 @@
                        $this->table_name = $table_name;
                        $this->fields = $fields;
                        $this->db = $GLOBALS['phpgw']->db;
+                       $this->db2 = clone($GLOBALS['phpgw']->db);
                        $this->join = & $this->db->join;
                        $this->like = & $this->db->like;
                }
@@ -293,7 +296,7 @@
                {
                        if (!$id)
                        {
-                               return null;
+                               return array();
                        }
                        $row = array();
                        $pk_params = $this->primary_key_conditions($id);
@@ -325,9 +328,9 @@
                                                                $order_method = 
"ORDER BY {$params['manytomany']['order']['sort']} 
{$params['manytomany']['order']['dir']}";
                                                        }
 
-                                                       
$this->db->query("SELECT {$column} FROM {$table} WHERE {$key}={$id} 
{$order_method}", __LINE__, __FILE__);
+                                                       
$this->db2->query("SELECT {$column} FROM {$table} WHERE {$key}={$id} 
{$order_method}", __LINE__, __FILE__);
                                                        $row[$field] = array();
-                                                       while 
($this->db->next_record())
+                                                       while 
($this->db2->next_record())
                                                        {
                                                                $data = array();
                                                                foreach 
($params['manytomany']['column'] as $intOrCol => $paramsOrCol)
@@ -343,7 +346,7 @@
                                                                                
$type = $params['type'];
                                                                        }
 
-                                                                       
$data[$col] = $this->_unmarshal($this->db->f($col, false), $type);
+                                                                       
$data[$col] = $this->_unmarshal($this->db2->f($col, false), $type);
                                                                }
                                                                $row[$field][] 
= $data;
                                                        }
@@ -351,11 +354,11 @@
                                                else
                                                {
                                                        $column = 
$params['manytomany']['column'];
-                                                       
$this->db->query("SELECT $column FROM $table WHERE $key=$id", __LINE__, 
__FILE__);
+                                                       
$this->db2->query("SELECT $column FROM $table WHERE $key=$id", __LINE__, 
__FILE__);
                                                        $row[$field] = array();
-                                                       while 
($this->db->next_record())
+                                                       while 
($this->db2->next_record())
                                                        {
-                                                               $row[$field][] 
= $this->_unmarshal($this->db->f($column, false), $params['type']);
+                                                               $row[$field][] 
= $this->_unmarshal($this->db2->f($column, false), $params['type']);
                                                        }
                                                }
                                        }
@@ -821,10 +824,24 @@
                                        }
                                }
                        }
+                       if ($this->db->get_transaction())
+                       {
+                               $this->global_lock = true;
+                       }
+                       else
+                       {
+                               $this->db->transaction_begin();
+                       }
+
                        foreach ($update_queries as $update_query)
                        {
                                $this->db->query($update_query, __LINE__, 
__FILE__);
                        }
+
+                       if (!$this->global_lock)
+                       {
+                               $this->db->transaction_commit();
+                       }
                        $receipt['id'] = $id;
                        $receipt['message'][] = array('msg' => lang('Entity %1 
has been updated', $entry['id']));
                        return $receipt;

Modified: branches/Version-2_0-branch/booking/inc/class.uiapplication.inc.php
===================================================================
--- branches/Version-2_0-branch/booking/inc/class.uiapplication.inc.php 
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/booking/inc/class.uiapplication.inc.php 
2016-08-30 11:14:07 UTC (rev 15542)
@@ -665,7 +665,7 @@
                                                }
                                                catch 
(booking_unauthorized_exception $e)
                                                {
-                                                       
phpgwapi_cache::message_set(lang('Could not add object due to insufficient 
permissions'));
+                                                       
phpgwapi_cache::message_set(lang('Could not add object due to insufficient 
permissions'),'error');
                                                }
                                        }
 
@@ -1082,7 +1082,7 @@
                                                        if ($old_file['name'] 
== $files['name']['name'])
                                                        {
                                                                $file_exist = 
true;
-                                                               
phpgwapi_cache::message_set(lang('file exists'));
+                                                               
phpgwapi_cache::message_set(lang('file exists'),'error');
                                                                break;
                                                        }
                                                }
@@ -1104,7 +1104,7 @@
                                                }
                                                catch 
(booking_unauthorized_exception $e)
                                                {
-                                                       
phpgwapi_cache::message_set(lang('Could not add object due to insufficient 
permissions'));
+                                                       
phpgwapi_cache::message_set(lang('Could not add object due to insufficient 
permissions'),'error');
                                                }
                                        }
 

Modified: branches/Version-2_0-branch/controller/inc/class.socase.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.socase.inc.php     
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.socase.inc.php     
2016-08-30 11:14:07 UTC (rev 15542)
@@ -51,7 +51,7 @@
                        return self::$so;
                }
 
-               function get_query( string $sort_field, boolean $ascending, 
string $search_for, string $search_type, array $filters, boolean $return_count )
+               function get_query( string $sort_field, bool $ascending, string 
$search_for, string $search_type, array $filters, bool $return_count )
                {
 
                }

Modified: branches/Version-2_0-branch/controller/inc/class.socheck_item.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.socheck_item.inc.php       
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.socheck_item.inc.php       
2016-08-30 11:14:07 UTC (rev 15542)
@@ -497,7 +497,7 @@
                  }
                 */
 
-               function get_query( string $sort_field, boolean $ascending, 
string $search_for, string $search_type, array $filters, boolean $return_count )
+               function get_query( string $sort_field, bool $ascending, string 
$search_for, string $search_type, array $filters, bool $return_count )
                {
 
                }

Modified: branches/Version-2_0-branch/controller/inc/class.socheck_list.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.socheck_list.inc.php       
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.socheck_list.inc.php       
2016-08-30 11:14:07 UTC (rev 15542)
@@ -715,7 +715,7 @@
                        return array("location_code" => $location_code, 
"check_lists_array" => $check_lists_array);
                }
 
-               function get_query( string $sort_field, boolean $ascending, 
string $search_for, string $search_type, array $filters, boolean $return_count )
+               function get_query( string $sort_field, bool $ascending, string 
$search_for, string $search_type, array $filters, bool $return_count )
                {
                        $current_time = time();
                        $buffer_in_days = 3600 * 24 * 7 * 5;

Modified: branches/Version-2_0-branch/controller/inc/class.socommon.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.socommon.inc.php   
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.socommon.inc.php   
2016-08-30 11:14:07 UTC (rev 15542)
@@ -92,11 +92,11 @@
                {
                        if ($type == 'bool')
                        {
-                               return (boolean)$value;
+                               return (bool)$value;
                        }
                        else if ($type == 'boolean')
                        {
-                               return (boolean)$value;
+                               return (bool)$value;
                        }
                        else if ($type == 'int')
                        {
@@ -150,7 +150,7 @@
                 */
                public function get_single( int $id )
                {
-                       $objects = $this->get(null, null, null, null, null, 
null, array($this->get_id_field_name() => $id));
+                       $objects = $this->get(0, 0, '', false, '', '', 
array($this->get_id_field_name() => $id));
                        if (count($objects) > 0)
                        {
                                $keys = array_keys($objects);
@@ -173,7 +173,7 @@
                 * @param $start_index int with index of first object.
                 * @param $num_of_objects int with max number of objects to 
return.
                 * @param $sort_field string representing the object field to 
sort on.
-                * @param $ascending boolean true for ascending sort on sort 
field, false
+                * @param $ascending bool true for ascending sort on sort 
field, false
                 * for descending.
                 * @param $search_for string with free text search query.
                 * @param $search_type string with the query type.
@@ -181,7 +181,7 @@
                 * @return array of objects. May return an empty
                 * array, never null. The array keys are the respective index 
numbers.
                 */
-               public function get( int $start_index, int $num_of_objects, 
string $sort_field, boolean $ascending, string $search_for, string 
$search_type, array $filters )
+               public function get( int $start_index, int $num_of_objects, 
string $sort_field, bool $ascending, string $search_for, string $search_type, 
array $filters )
                {
                        $results = array();   // Array to store result objects
                        $map = array(); // Array to hold number of records per 
target object
@@ -309,7 +309,7 @@
                 */
                public function get_count( string $search_for, string 
$search_type, array $filters )
                {
-                       return $this->get_query_count($this->get_query(null, 
null, $search_for, $search_type, $filters, true));
+                       return $this->get_query_count($this->get_query('', 
false, $search_for, $search_type, $filters, true));
                }
 
                /**
@@ -326,16 +326,16 @@
                 * @param $start_index int with index of first object.
                 * @param $num_of_objects int with max number of objects to 
return.
                 * @param $sort_field string representing the object field to 
sort on.
-                * @param $ascending boolean true for ascending sort on sort 
field, false
+                * @param $ascending bool true for ascending sort on sort 
field, false
                 * for descending.
                 * @param $search_for string with free text search query.
                 * @param $search_type string with the query type.
                 * @param $filters array with key => value of filters.
-                * @param $return_count boolean telling to return only the 
count of the
+                * @param $return_count bool telling to return only the count 
of the
                 * matching objects, or the objects themself.
                 * @return string with SQL.
                 */
-               protected abstract function get_query( string $sort_field, 
boolean $ascending, string $search_for, string $search_type, array $filters, 
boolean $return_count );
+               protected abstract function get_query( string $sort_field, bool 
$ascending, string $search_for, string $search_type, array $filters, bool 
$return_count );
 
                protected abstract function populate( int $object_id, &$object 
);
 

Modified: branches/Version-2_0-branch/controller/inc/class.socontrol.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.socontrol.inc.php  
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.socontrol.inc.php  
2016-08-30 11:14:07 UTC (rev 15542)
@@ -84,7 +84,7 @@
                 * Update the database values for an existing control object.
                 *
                 * @param $control the control to be updated
-                * @return boolean true if successful, false otherwise
+                * @return bool true if successful, false otherwise
                 */
                function update( $control )
                {
@@ -1151,7 +1151,8 @@
                                . " FROM controller_control_component_list"
                                . " {$this->db->join} controller_control ON 
controller_control.id = controller_control_component_list.control_id"
                                . " {$this->db->left_join} 
controller_control_serie ON (controller_control_component_list.id = 
controller_control_serie.control_relation_id AND 
controller_control_serie.control_relation_type = 'component')"
-                               . " WHERE location_id = {$location_id} AND 
component_id = {$component_id}";
+                               . " WHERE location_id = {$location_id} AND 
component_id = {$component_id}"
+                               . " ORDER BY repeat_type, repeat_interval";
 //                     _debug_array($sql);
                        $this->db->query($sql, __LINE__, __FILE__);
 
@@ -1220,7 +1221,7 @@
                        return $ret;
                }
 
-               protected function get_query( string $sort_field, boolean 
$ascending, string $search_for, string $search_type, array $filters, boolean 
$return_count )
+               protected function get_query( string $sort_field, bool 
$ascending, string $search_for, string $search_type, array $filters, bool 
$return_count )
                {
                        $clauses = array('1=1');
 

Modified: 
branches/Version-2_0-branch/controller/inc/class.socontrol_group.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.socontrol_group.inc.php    
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.socontrol_group.inc.php    
2016-08-30 11:14:07 UTC (rev 15542)
@@ -262,7 +262,7 @@
                        return $ret;
                }
 
-               protected function get_query( string $sort_field, boolean 
$ascending, string $search_for, string $search_type, array $filters, boolean 
$return_count )
+               protected function get_query( string $sort_field, bool 
$ascending, string $search_for, string $search_type, array $filters, bool 
$return_count )
                {
                        $clauses = array('1=1');
                        if ($search_for)

Modified: 
branches/Version-2_0-branch/controller/inc/class.socontrol_group_list.inc.php
===================================================================
--- 
branches/Version-2_0-branch/controller/inc/class.socontrol_group_list.inc.php   
    2016-08-30 10:38:55 UTC (rev 15541)
+++ 
branches/Version-2_0-branch/controller/inc/class.socontrol_group_list.inc.php   
    2016-08-30 11:14:07 UTC (rev 15542)
@@ -88,7 +88,7 @@
                 * Update the database values for an existing 
control_group_list object.
                 *
                 * @param $control_group_list the control_group_list to be 
updated
-                * @return boolean true if successful, false otherwise
+                * @return bool true if successful, false otherwise
                 */
                function update( $control_group_list )
                {
@@ -240,7 +240,7 @@
                        return $control_group_list;
                }
 
-               protected function get_query( string $sort_field, boolean 
$ascending, string $search_for, string $search_type, array $filters, boolean 
$return_count )
+               protected function get_query( string $sort_field, bool 
$ascending, string $search_for, string $search_type, array $filters, bool 
$return_count )
                {
 
                }

Modified: 
branches/Version-2_0-branch/controller/inc/class.socontrol_item.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.socontrol_item.inc.php     
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.socontrol_item.inc.php     
2016-08-30 11:14:07 UTC (rev 15542)
@@ -95,7 +95,7 @@
                 * Update the database values for an existing control item 
object.
                 *
                 * @param $control item object to be updated
-                * @return boolean true if successful, false otherwise
+                * @return bool true if successful, false otherwise
                 */
                function update( $control_item )
                {
@@ -237,7 +237,7 @@
                        {
                                $control_item = new 
controller_control_item($this->unmarshal($this->db->f('id'), 'int'));
                                
$control_item->set_title($this->unmarshal($this->db->f('title', true), 
'string'));
-                               
$control_item->set_required($this->unmarshal($this->db->f('required', true), 
'boolean'));
+                               
$control_item->set_required($this->unmarshal($this->db->f('required', true), 
'bool'));
                                
$control_item->set_type($this->unmarshal($this->db->f('type', true), 'string'));
                                
$control_item->set_what_to_do($this->unmarshal($this->db->f('what_to_do', 
true), 'string'));
                                
$control_item->set_how_to_do($this->unmarshal($this->db->f('how_to_do', true), 
'string'));
@@ -269,7 +269,7 @@
                        return $ret;
                }
 
-               protected function get_query( string $sort_field, boolean 
$ascending, string $search_for, string $search_type, array $filters, boolean 
$return_count )
+               protected function get_query( string $sort_field, bool 
$ascending, string $search_for, string $search_type, array $filters, bool 
$return_count )
                {
 
                        $clauses = array('1=1');
@@ -367,7 +367,7 @@
                                $control_item = new 
controller_control_item((int)$control_item_id);
 
                                
$control_item->set_title($this->unmarshal($this->db->f('title', true), 
'string'));
-                               
$control_item->set_required($this->unmarshal($this->db->f('required', true), 
'boolean'));
+                               
$control_item->set_required($this->unmarshal($this->db->f('required', true), 
'bool'));
                                
$control_item->set_what_to_do($this->unmarshal($this->db->f('what_to_do', 
true), 'string'));
                                
$control_item->set_how_to_do($this->unmarshal($this->db->f('how_to_do', true), 
'string'));
                                
$control_item->set_control_group_id($this->unmarshal($this->db->f('control_group_id'),
 'int'));
@@ -425,7 +425,7 @@
                                //create check_item and add to return array
                                $control_item = new 
controller_control_item($this->unmarshal($this->db->f('id'), 'int'));
                                
$control_item->set_title($this->unmarshal($this->db->f('title', true), 
'string'));
-                               
$control_item->set_required($this->unmarshal($this->db->f('required', true), 
'boolean'));
+                               
$control_item->set_required($this->unmarshal($this->db->f('required', true), 
'bool'));
                                
$control_item->set_type($this->unmarshal($this->db->f('type', true), 'string'));
                                
$control_item->set_what_to_do($this->unmarshal($this->db->f('what_to_do', 
true), 'string'));
                                
$control_item->set_how_to_do($this->unmarshal($this->db->f('how_to_do', true), 
'string'));

Modified: 
branches/Version-2_0-branch/controller/inc/class.socontrol_item_list.inc.php
===================================================================
--- 
branches/Version-2_0-branch/controller/inc/class.socontrol_item_list.inc.php    
    2016-08-30 10:38:55 UTC (rev 15541)
+++ 
branches/Version-2_0-branch/controller/inc/class.socontrol_item_list.inc.php    
    2016-08-30 11:14:07 UTC (rev 15542)
@@ -178,7 +178,7 @@
                        {
                                $control_item = new 
controller_control_item($this->unmarshal($this->db->f('id'), 'int'));
                                
$control_item->set_title($this->unmarshal($this->db->f('title', true), 
'string'));
-                               
$control_item->set_required($this->unmarshal($this->db->f('required'), 
'boolean'));
+                               
$control_item->set_required($this->unmarshal($this->db->f('required'), 'bool'));
                                
$control_item->set_what_to_do($this->unmarshal($this->db->f('what_to_do', 
true), 'string'));
                                
$control_item->set_how_to_do($this->unmarshal($this->db->f('how_to_do', true), 
'string'));
                                
$control_item->set_control_group_id($this->unmarshal($this->db->f('control_group_id'),
 'int'));
@@ -213,7 +213,7 @@
                        {
                                $control_item = new 
controller_control_item($this->unmarshal($this->db->f('id'), 'int'));
                                
$control_item->set_title($this->unmarshal($this->db->f('title', true), 
'string'));
-                               
$control_item->set_required($this->unmarshal($this->db->f('required'), 
'boolean'));
+                               
$control_item->set_required($this->unmarshal($this->db->f('required'), 'bool'));
                                
$control_item->set_what_to_do($this->unmarshal($this->db->f('what_to_do', 
true), 'string'));
                                
$control_item->set_how_to_do($this->unmarshal($this->db->f('how_to_do', true), 
'string'));
                                
$control_item->set_control_group_id($this->unmarshal($this->db->f('control_group_id'),
 'int'));
@@ -261,7 +261,7 @@
                        {
                                $control_item = new 
controller_control_item($this->unmarshal($this->db->f('id'), 'int'));
                                
$control_item->set_title($this->unmarshal($this->db->f('title', true), 
'string'));
-                               
$control_item->set_required($this->unmarshal($this->db->f('required'), 
'boolean'));
+                               
$control_item->set_required($this->unmarshal($this->db->f('required'), 'bool'));
                                
$control_item->set_what_to_do($this->unmarshal($this->db->f('what_to_do', 
true), 'string'));
                                
$control_item->set_how_to_do($this->unmarshal($this->db->f('how_to_do', true), 
'string'));
                                
$control_item->set_control_group_id($this->unmarshal($this->db->f('control_group_id'),
 'int'));
@@ -329,7 +329,7 @@
 
                                        $control_item = new 
controller_control_item($this->unmarshal($this->db->f('ci_id'), 'int'));
                                        
$control_item->set_title($this->unmarshal($this->db->f('title', true), 
'string'));
-                                       
$control_item->set_required($this->unmarshal($this->db->f('required'), 
'boolean'));
+                                       
$control_item->set_required($this->unmarshal($this->db->f('required'), 'bool'));
                                        
$control_item->set_what_to_do($this->unmarshal($this->db->f('what_to_do', 
true), 'string'));
                                        
$control_item->set_how_to_do($this->unmarshal($this->db->f('how_to_do', true), 
'string'));
                                        
$control_item->set_control_group_id($this->unmarshal($this->db->f('control_group_id'),
 'int'));
@@ -433,7 +433,7 @@
 
                }
 
-               protected function get_query( string $sort_field, boolean 
$ascending, string $search_for, string $search_type, array $filters, boolean 
$return_count )
+               protected function get_query( string $sort_field, bool 
$ascending, string $search_for, string $search_type, array $filters, bool 
$return_count )
                {
 
                }

Modified: 
branches/Version-2_0-branch/controller/inc/class.socontrol_item_option.inc.php
===================================================================
--- 
branches/Version-2_0-branch/controller/inc/class.socontrol_item_option.inc.php  
    2016-08-30 10:38:55 UTC (rev 15541)
+++ 
branches/Version-2_0-branch/controller/inc/class.socontrol_item_option.inc.php  
    2016-08-30 11:14:07 UTC (rev 15542)
@@ -136,7 +136,7 @@
 
                }
 
-               function get_query( string $sort_field, boolean $ascending, 
string $search_for, string $search_type, array $filters, boolean $return_count )
+               function get_query( string $sort_field, bool $ascending, string 
$search_for, string $search_type, array $filters, bool $return_count )
                {
                        
                }

Modified: branches/Version-2_0-branch/controller/inc/class.sodocument.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.sodocument.inc.php 
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.sodocument.inc.php 
2016-08-30 11:14:07 UTC (rev 15542)
@@ -70,7 +70,7 @@
                        return $ret;
                }
 
-               protected function get_query( string $sort_field, boolean 
$ascending, string $search_for, string $search_type, array $filters, boolean 
$return_count )
+               protected function get_query( string $sort_field, bool 
$ascending, string $search_for, string $search_type, array $filters, bool 
$return_count )
                {
 
                        $clauses = array('1=1');
@@ -313,6 +313,12 @@
                        $path .= "/{$name}";
                        $file = array('string' => $path, RELATIVE_NONE);
 
+                       return $vfs->cp(array(
+                                                       'from' => 
$temporary_name,
+                                                       'to' => $path,
+                                                       'relatives' => 
array(RELATIVE_NONE | VFS_REAL, RELATIVE_ALL))
+                               );
+/*
                        return $vfs->write
                                        (
                                        array
@@ -322,6 +328,7 @@
                                                'content' => 
file_get_contents($temporary_name)
                                        )
                        );
+ */
                }
 
                public function read_document_from_vfs( string $document_type, 
$id, $name )
@@ -352,10 +359,8 @@
                        $vfs = CreateObject('phpgwapi.vfs');
                        $vfs->override_acl = 1;
 
-                       return $vfs->rm
-                                       (
-                                       array
-                                               (
+                       return $vfs->rm(
+                                       array(
                                                'string' => $path,
                                                RELATIVE_NONE
                                        )
@@ -364,6 +369,7 @@
 
                public function delete_document( $id )
                {
+                       $id = (int)$id;
                        $sql = "DELETE FROM controller_document WHERE id = 
{$id}";
 
                        $result = $this->db->query($sql, __LINE__, __FILE__);

Modified: branches/Version-2_0-branch/controller/inc/class.soprocedure.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.soprocedure.inc.php        
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.soprocedure.inc.php        
2016-08-30 11:14:07 UTC (rev 15542)
@@ -107,7 +107,7 @@
                 * Update the database values for an existing activity object.
                 *
                 * @param $activity the activity to be updated
-                * @return boolean true if successful, false otherwise
+                * @return bool true if successful, false otherwise
                 */
                function update( $procedure )
                {
@@ -454,7 +454,7 @@
                        return $ret;
                }
 
-               protected function get_query( string $sort_field, boolean 
$ascending, string $search_for, string $search_type, array $filters, boolean 
$return_count )
+               protected function get_query( string $sort_field, bool 
$ascending, string $search_for, string $search_type, array $filters, bool 
$return_count )
                {
                        $clauses = array('1=1');
                        if ($search_for)

Modified: branches/Version-2_0-branch/controller/inc/class.uicomponent.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.uicomponent.inc.php        
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.uicomponent.inc.php        
2016-08-30 11:14:07 UTC (rev 15542)
@@ -302,12 +302,18 @@
                                                                'text' => 
lang('User'),
                                                                'list' => 
$user_list,
                                                                'onchange' => 
'update_table();'
-                                                       ),
+                                                       ),/*
                                                        array('type' => 
'checkbox',
                                                                'name' => 
'user_only',
                                                                'text' => 
'Filtrer bruker',
                                                                'value' => 1,
                                                                'onclick' => 
'update_table();'
+                                                       ),*/
+                                                       array('type' => 
'checkbox',
+                                                               'name' => 
'all_users',
+                                                               'text' => 'Vis 
totale timer',
+                                                               'value' => 1,
+                                                               'onclick' => 
'update_table();'
                                                        ),
                                                        array('type' => 
'filter',
                                                                'name' => 
'district_id',
@@ -469,7 +475,9 @@
                        $query = phpgw::get_var('query', 'string');
                        $year = phpgw::get_var('year', 'int');
                        $all_items = phpgw::get_var('all_items', 'bool');
-                       $user_only = phpgw::get_var('user_only', 'bool');
+                       $all_users = phpgw::get_var('all_users', 'bool');
+//                     $user_only = phpgw::get_var('user_only', 'bool');
+                       $user_only = $all_users ? false : true;
                        $filter_status = phpgw::get_var('status', 'string');
                        $report_type = phpgw::get_var('report_type', 'string');
                        if ($filter_component_str = 
phpgw::get_var('filter_component', 'string'))
@@ -837,6 +845,11 @@
 
                        if ($report_type == 'summary')
                        {
+                               if($all_users)
+                               {
+                                       $user_id = 0;
+                               }
+
                                return array(
                                        'components' => null,
                                        'summary' => 
$this->get_summary($values, $user_id),
@@ -906,10 +919,10 @@
                                for ($_month = 1; $_month < 13; $_month++)
                                {
                                        $row[$_month] = 
$this->translate_calendar_info($entry[$_month], $year, $_month, $filter_status, 
$found_at_least_one, $keep_only_assigned_to);
-                                       if ($row[$_month] && (!$user_id || 
$entry[$_month]['info']['assigned_to'] == $user_id))
+                                       if(true)// ($row[$_month] && (!$user_id 
|| $entry[$_month]['info']['assigned_to'] == $user_id))
                                        {
-                                               $row_sum[$_month] = 
$entry[$_month]['info']['service_time'] + 
$entry[$_month]['info']['controle_time'];
-                                               $row_sum_actual[$_month] = + 
$entry[$_month]['info']['billable_hours'];
+                                               $row_sum[$_month] = 
(float)$entry[$_month]['info']['service_time'] + 
(float)$entry[$_month]['info']['controle_time'];
+                                               $row_sum_actual[$_month] = + 
(float)$entry[$_month]['info']['billable_hours'];
                                        }
                                        else
                                        {

Modified: branches/Version-2_0-branch/controller/inc/class.uicontrol.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.uicontrol.inc.php  
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.uicontrol.inc.php  
2016-08-30 11:14:07 UTC (rev 15542)
@@ -903,6 +903,8 @@
                                'allrows' => phpgw::get_var('length', 'int') == 
-1,
                        );
 
+                       $filters = array();
+                       $search_type = '';
 
                        $ctrl_area = phpgw::get_var('control_areas');
                        if (isset($ctrl_area) && $ctrl_area > 0)

Modified: 
branches/Version-2_0-branch/controller/inc/class.uicontrol_group.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.uicontrol_group.inc.php    
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.uicontrol_group.inc.php    
2016-08-30 11:14:07 UTC (rev 15542)
@@ -374,7 +374,7 @@
                                $building_part_options = 
$this->so->get_building_part_select_array($control_group->get_building_part_id());
 
                                $control_group_array = 
$control_group->toArray();
-                               $control_items_array = 
$this->so_control_item->get(null, null, 
'controller_control_item.control_area_id', true, null, null, array(
+                               $control_items_array = 
$this->so_control_item->get(0, 0, 'controller_control_item.control_area_id', 
true, '', '', array(
                                        'available' => 'yes'));
 
                                $control_items = array();
@@ -488,7 +488,7 @@
                                $building_part_options = 
$this->so->get_building_part_select_array($control_group->get_building_part_id());
 
                                $control_group_array = 
$control_group->toArray();
-                               $control_items_array = 
$this->so_control_item->get(null, null, 
'controller_control_item.control_area_id', true, null, null, array(
+                               $control_items_array = 
$this->so_control_item->get(0, 0, 'controller_control_item.control_area_id', 
true, '', '', array(
                                        'available' => 'yes'));
 
                                $control_items = array();
@@ -760,7 +760,9 @@
                        // YUI variables for paging and sorting
                        $start_index = $params['start'];
                        $num_of_objects = $params['results'] > 0 ? 
$params['results'] : null;
-                       $sort_field = $params['order'];
+                       $sort_field = ($params['order']) ? $params['order'] : 
'';
+                       $filters = array();
+                       $search_type = '';
 
                        $ctrl_area = phpgw::get_var('control_areas');
                        if (isset($ctrl_area) && $ctrl_area > 0)

Modified: 
branches/Version-2_0-branch/controller/inc/class.uicontrol_item.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.uicontrol_item.inc.php     
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.uicontrol_item.inc.php     
2016-08-30 11:14:07 UTC (rev 15542)
@@ -425,7 +425,8 @@
                        $num_of_objects = $params['results'] > 0 ? 
$params['results'] : null;
                        $sort_field = $params['order'];
 
-
+                       $search_type = '';
+                       $filters = array();
                        $ctrl_area = phpgw::get_var('control_areas');
                        if (isset($ctrl_area) && $ctrl_area > 0)
                        {

Modified: branches/Version-2_0-branch/controller/inc/class.uidocument.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.uidocument.inc.php 
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.uidocument.inc.php 
2016-08-30 11:14:07 UTC (rev 15542)
@@ -280,13 +280,16 @@
                                        else
                                        {
                                                // Handle failure on storing 
document
-                                               $this->redirect($document, 
$document_propeties, '', '');
+                                               $this->redirect($document, 
$document_properties, '', '');
                                        }
                                }
                                else
                                {
+                                               
$GLOBALS['phpgw']->redirect_link('/index.php', array('menuaction' => 
'controller.uidocument.show',
+                                                       'procedure_id' => 
$procedure->get_id(),
+                                                       'tab' => 'documents'));
                                        //Handle vfs failure to store document
-                                       $this->redirect($document, 
$document_propeties, '', '');
+//                                     $this->redirect($document, 
$document_properties, '', '');
                                }
                        }
                }
@@ -464,7 +467,7 @@
                                        $msgbox_data = 
$GLOBALS['phpgw']->common->msgbox($msgbox_data);
                                }
 
-                               $documents = $this->so->get(null, null, null, 
null, null, null, array(
+                               $documents = $this->so->get(0, 0, '', false, 
'', '', array(
                                        'procedure_id' => $procedure_id,
                                        'type' => $document_type));
 

Modified: branches/Version-2_0-branch/controller/inc/class.uiprocedure.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/class.uiprocedure.inc.php        
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/class.uiprocedure.inc.php        
2016-08-30 11:14:07 UTC (rev 15542)
@@ -681,7 +681,8 @@
 
                        $start_index = $params['start'];
                        $num_of_objects = $params['results'] > 0 ? 
$params['results'] : null;
-                       $sort_field = $params['order'];
+                       $sort_field = ($params['order']) ? $params['order'] : 
'';
+                       $filters = array();
 
                        $ctrl_area = phpgw::get_var('control_areas');
                        if (isset($ctrl_area) && $ctrl_area > 0)
@@ -690,7 +691,7 @@
                        }
                        $sort_ascending = $params['sort'] == 'desc' ? false : 
true;
                        // Form variables
-                       $search_type = phpgw::get_var('search_option');
+                       $search_type = phpgw::get_var('search_option', 
'string', 'REQUEST', '');
                        // Create an empty result set
                        $result_objects = array();
                        $result_count = 0;

Modified: branches/Version-2_0-branch/controller/inc/model/class.model.inc.php
===================================================================
--- branches/Version-2_0-branch/controller/inc/model/class.model.inc.php        
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/inc/model/class.model.inc.php        
2016-08-30 11:14:07 UTC (rev 15542)
@@ -38,7 +38,7 @@
                protected $field_of_responsibility_name;
                protected $permission_array;
 
-               public function __construct( int $id )
+               public function __construct( $id )
                {
                        $this->id = (int)$id;
                }
@@ -83,7 +83,7 @@
                 * in order to validate against the standard database rules.  
The subclasses can in addition
                 * add their own specific validation logic.
                 *
-                * @return boolean true if the object is valid, false otherwise
+                * @return bool true if the object is valid, false otherwise
                 */
                public function validates()
                {

Modified: branches/Version-2_0-branch/controller/templates/base/component.xsl
===================================================================
--- branches/Version-2_0-branch/controller/templates/base/component.xsl 
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/controller/templates/base/component.xsl 
2016-08-30 11:14:07 UTC (rev 15542)
@@ -313,13 +313,14 @@
                        var report_type = $("#report_type").val();
                        var user_id = $("#user_id").val();
                        var custom_frontend = 
$("[name='custom_frontend']").val();
+                       var hide_all_users = false;
 
                        if(custom_frontend ==1)
                        {
                                $( "#user_id" ).hide();
                                $("[for='user_id']").hide();
                        }
-
+//console.log(user_id);
                        if(user_id < 0 || custom_frontend ==1)
                        {
                                $( "#entity_group_id" ).hide();
@@ -330,8 +331,9 @@
                                $("[for='all_items']").hide();
                                $( "#org_unit_id" ).hide();
                                $("[for='org_unit_id']").hide();
-                               $("[name='user_only']").hide();
-                               $("[for='user_only']").hide();
+                               $("[name='all_users']").hide();
+                               $("[for='all_users']").hide();
+                               hide_all_users = true;
                        }
                        else
                        {
@@ -343,21 +345,30 @@
                                $("[for='all_items']").show();
                                $( "#org_unit_id" ).show();
                                $("[for='org_unit_id']").show();
-                               $("[name='user_only']").show();
-                               $("[for='user_only']").show();
+                               $("[name='all_users']").show();
+                               $("[for='all_users']").show();
                        }
 
-                       if(report_type == 'summary')
+                       if(report_type != 'summary' && hide_all_users == false)
                        {
-                               $("[name='user_only']").hide();
-                               $("[for='user_only']").hide();
+                               $("[name='all_users']").show();
+                               $("[for='all_users']").show();
                        }
-                       else
+
+                       if(user_id == '')
                        {
-                               $("[name='user_only']").show();
-                               $("[for='user_only']").show();
+                               $("[name='all_users']").hide();
+                               $("[for='all_users']").hide();
                        }
 
+                       if(report_type == 'summary')
+                       {
+                               $("[name='all_items']").hide();
+                               $("[for='all_items']").hide();
+                               $("[name='status']").hide();
+                               $("[for='status']").hide();
+                       }
+
                        var requestUrl = $("#queryForm").attr("action");
                        requestUrl += '&phpgw_return_as=json' + "&" + 
$("#queryForm").serialize();
 

Modified: branches/Version-2_0-branch/frontend/inc/class.bofellesdata.inc.php
===================================================================
--- branches/Version-2_0-branch/frontend/inc/class.bofellesdata.inc.php 
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/frontend/inc/class.bofellesdata.inc.php 
2016-08-30 11:14:07 UTC (rev 15542)
@@ -67,7 +67,11 @@
                                return false;
                        }
 
-                       $db = createObject('phpgwapi.db', null, null, true);
+//                     $db = createObject('phpgwapi.db', null, null, true);
+                       /*
+                        * pdo for oracle is deprecated for php7 - switch to 
oci8/adodb
+                        */
+                       $db = createObject('phpgwapi.db_adodb', null, null, 
true);
 
                        $db->debug = 
!!$config->config_data['external_db_debug'];
                        $db->Host = $config->config_data['external_db_host'];

Modified: branches/Version-2_0-branch/helpdesk/inc/class.botts.inc.php
===================================================================
--- branches/Version-2_0-branch/helpdesk/inc/class.botts.inc.php        
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/helpdesk/inc/class.botts.inc.php        
2016-08-30 11:14:07 UTC (rev 15542)
@@ -125,7 +125,7 @@
                        $columns['assignedto'] = array
                                (
                                'id' => 'assignedto',
-                               'name' => lang('assignedto')
+                               'name' => lang('assigned to')
                        );
 
                        $columns['billable_hours'] = array(
@@ -437,11 +437,16 @@
                        return $tickets;
                }
 
-               function read_single($id)
+               function read_single($id, $values = array(), $view = false )
                {
                        $this->so->update_view($id);
 
-                       $ticket = $this->so->read_single($id);
+                       $values['attributes'] = $this->get_custom_cols();
+                       if(!$ticket = $this->so->read_single($id, $values))
+                       {
+                               return array();
+                       }
+                       $ticket = $this->custom->prepare($ticket, 'helpdesk', 
'.ticket', $view);
 
                        $ticket['user_lid'] = 
$GLOBALS['phpgw']->accounts->id2name($ticket['user_id']);
                        $ticket['group_lid'] = 
$GLOBALS['phpgw']->accounts->id2name($ticket['group_id']);
@@ -657,59 +662,67 @@
                        return $record_history;
                }
 
-               function add($ticket)
+               function add( $data, $values_attribute = array() )
                {
-                       if((!isset($ticket['location_code']) || ! 
$ticket['location_code']) && isset($ticket['location']) && 
is_array($ticket['location']))
+
+                       $data['finnish_date'] = 
$this->bocommon->date_to_timestamp($data['finnish_date']);
+
+                       if ($values_attribute && is_array($values_attribute))
                        {
-                               while (is_array($ticket['location']) && 
list(,$value) = each($ticket['location']))
+                               $values_attribute = 
$this->custom->convert_attribute_save($values_attribute);
+                       }
+
+                       $criteria = array
+                               (
+                               'appname' => 'helpdesk',
+                               'location' => $this->acl_location,
+                               'allrows' => true
+                       );
+
+                       $custom_functions = 
$GLOBALS['phpgw']->custom_functions->find($criteria);
+
+                       foreach ($custom_functions as $entry)
+                       {
+                               // prevent path traversal
+                               if (preg_match('/\.\./', $entry['file_name']))
                                {
-                                       if($value)
-                                       {
-                                               $location[] = $value;
-                                       }
+                                       continue;
                                }
-                               $ticket['location_code']=implode("-", 
$location);
+
+                               $file = PHPGW_SERVER_ROOT . 
"/helpdesk/inc/custom/{$GLOBALS['phpgw_info']['user']['domain']}/{$entry['file_name']}";
+                               if ($entry['active'] && is_file($file) && 
!$entry['client_side'] && $entry['pre_commit'])
+                               {
+                                       require $file;
+                               }
                        }
 
-                       $ticket['finnish_date'] = 
$this->bocommon->date_to_timestamp($ticket['finnish_date']);
+                       $receipt = $this->so->add($data, $values_attribute);
 
-                       $receipt = $this->so->add($ticket);
-
                        $this->config->read();
 
-                       if ( (isset($ticket['send_mail']) && 
$ticket['send_mail']) 
-                               || 
(isset($this->config->config_data['mailnotification'])
-                               && 
$this->config->config_data['mailnotification'])
+                       if ((isset($data['send_mail']) && $data['send_mail']) 
|| (isset($this->config->config_data['mailnotification']) && 
$this->config->config_data['mailnotification'])
                        )
                        {
-                               $receipt_mail = 
$this->mail_ticket($receipt['id'],false,$receipt,$ticket['location_code']);
+                               $receipt_mail = 
$this->mail_ticket($receipt['id'], false, $receipt, $data['location_code'], 
false, isset($data['send_mail']) && $data['send_mail'] ? true : false);
                        }
 
-                       $criteria = array
-                               (
-                                       'appname'       => 'helpdesk',
-                                       'location'      => $this->acl_location,
-                                       'allrows'       => true
-                               );
-
-                       $custom_functions = 
$GLOBALS['phpgw']->custom_functions->find($criteria);
-
-                       foreach ( $custom_functions as $entry )
+                       reset($custom_functions);
+                       foreach ($custom_functions as $entry)
                        {
                                // prevent path traversal
-                               if ( preg_match('/\.\./', $entry['file_name']) )
+                               if (preg_match('/\.\./', $entry['file_name']))
                                {
                                        continue;
                                }
 
                                $file = PHPGW_SERVER_ROOT . 
"/helpdesk/inc/custom/{$GLOBALS['phpgw_info']['user']['domain']}/{$entry['file_name']}";
-                               if ( $entry['active'] && is_file($file) )
+                               if ($entry['active'] && is_file($file) && 
!$entry['client_side'] && !$entry['pre_commit'])
                                {
                                        require_once $file;
                                }
                        }
 
-                       if(isset($receipt_mail) && is_array($receipt_mail))
+                       if (isset($receipt_mail) && is_array($receipt_mail))
                        {
                                $receipt = array_merge($receipt, $receipt_mail);
                        }
@@ -990,13 +1003,67 @@
                        return $receipt;
                }
 
-               public function update_ticket($data, $id)
+               public function update_priority( $data, $id = 0 )
                {
-                       $receipt        = $this->so->update_ticket($data, $id);
-                       $this->fields_updated = $this->so->fields_updated;      
        
+                       $receipt = $this->so->update_priority($data, $id);
+                       $this->fields_updated = $this->so->fields_updated;
                        return $receipt;
                }
 
+               public function update_ticket( &$data, $id, $receipt = array(), 
$values_attribute = array() , $simple = false)
+               {
+                       if ($values_attribute && is_array($values_attribute))
+                       {
+                               $values_attribute = 
$this->custom->convert_attribute_save($values_attribute);
+                       }
+
+                       $criteria = array
+                               (
+                               'appname' => 'helpdesk',
+                               'location' => $this->acl_location,
+                               'allrows' => true
+                       );
+
+                       $custom_functions = 
$GLOBALS['phpgw']->custom_functions->find($criteria);
+
+                       foreach ($custom_functions as $entry)
+                       {
+                               // prevent path traversal
+                               if (preg_match('/\.\./', $entry['file_name']))
+                               {
+                                       continue;
+                               }
+
+                               $file = PHPGW_SERVER_ROOT . 
"/helpdesk/inc/custom/{$GLOBALS['phpgw_info']['user']['domain']}/{$entry['file_name']}";
+                               if ($entry['active'] && is_file($file) && 
!$entry['client_side'] && $entry['pre_commit'])
+                               {
+                                       require $file;
+                               }
+                       }
+
+                       $receipt = $this->so->update_ticket($data, $id, 
$receipt, $values_attribute, $simple);
+                       $this->fields_updated = $this->so->fields_updated;
+
+                       reset($custom_functions);
+
+                       foreach ($custom_functions as $entry)
+                       {
+                               // prevent path traversal
+                               if (preg_match('/\.\./', $entry['file_name']))
+                               {
+                                       continue;
+                               }
+
+                               $file = PHPGW_SERVER_ROOT . 
"/helpdesk/inc/custom/{$GLOBALS['phpgw_info']['user']['domain']}/{$entry['file_name']}";
+                               if ($entry['active'] && is_file($file) && 
!$entry['client_side'] && !$entry['pre_commit'])
+                               {
+                                       require $file;
+                               }
+                       }
+
+                       return $receipt;
+               }
+
                public function get_reported_by( $selected = 0 )
                {
                        $values = $this->so->get_reported_by();

Modified: branches/Version-2_0-branch/helpdesk/inc/class.menu.inc.php
===================================================================
--- branches/Version-2_0-branch/helpdesk/inc/class.menu.inc.php 2016-08-30 
10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/helpdesk/inc/class.menu.inc.php 2016-08-30 
11:14:07 UTC (rev 15542)
@@ -72,6 +72,18 @@
                                                        'text'  => 
lang('Configuration'),
                                                        'url'   => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'admin.uiconfig.index', 'appname' => 'helpdesk') )
                                                ),
+                                               'ticket_attribs' => array
+                                                       (
+                                                       'text' => lang('ticket 
Attributes'),
+                                                       'url' => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'admin.ui_custom.list_attribute',
+                                                               'appname' => 
'helpdesk', 'location' => '.ticket', 'menu_selection' => 
'admin::helpdesk::ticket_attribs'))
+                                               ),
+                                               'ticket_functions' => array
+                                                       (
+                                                       'text' => lang('custom 
functions'),
+                                                       'url' => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'admin.ui_custom.list_custom_function',
+                                                               'appname' => 
'helpdesk', 'location' => '.ticket', 'menu_selection' => 
'admin::helpdesk::ticket_functions'))
+                                               ),
                                                'ticket_cats'   => array
                                                (
                                                        'text'  => lang('Ticket 
Categories'),
@@ -102,7 +114,7 @@
                                                array
                                                (
                                                        'text'  => 
$GLOBALS['phpgw']->translation->translate('Grant Access', array(), true),
-                                                       'url'   => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'helpdesk.uiadmin.aclprefs', 'acl_app'=> 'helpdesk'))
+                                                       'url'   => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'property.uiadmin.aclprefs', 'acl_app'=> 'helpdesk'))
                                                )
                                        );
 
@@ -116,7 +128,7 @@
 
                        $menus['navigation'] = array();
 
-
+/*
                        if ( $acl->check('.ticket',PHPGW_ACL_READ, 'helpdesk') )
                        {
                                $menus['navigation']['helpdesk'] = array
@@ -126,21 +138,7 @@
                                                'image'         => 
array('helpdesk', 'helpdesk')
                                        );
                        }
-
-                       if ( $acl->check('.ticket.order',PHPGW_ACL_ADD, 
'helpdesk') )
-                       {
-                               $menus['navigation']['helpdesk']['children'] = 
array
-                                       (
-                                               'order_template' => array
-                                               (       
-                                                       'url'   => 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'property.uigeneric.index', 'type' => 'order_template') ),
-                                                       'text'  => lang('order 
template'),
-                                                       'image'         => 
array('helpdesk', 'helpdesk')
-                                               )
-                                       );
-                       }
-
-
+*/
                        $GLOBALS['phpgw_info']['flags']['currentapp'] = 
$incoming_app;
                        return $menus;
                }

Modified: branches/Version-2_0-branch/helpdesk/inc/class.sotts.inc.php
===================================================================
--- branches/Version-2_0-branch/helpdesk/inc/class.sotts.inc.php        
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/helpdesk/inc/class.sotts.inc.php        
2016-08-30 11:14:07 UTC (rev 15542)
@@ -131,19 +131,14 @@
                        {
                                if( $order == 'assignedto' )
                                {
-//                                     $result_order_field = 
',account_lastname';
-//                                     $order_join = "LEFT OUTER JOIN 
phpgw_accounts ON phpgw_helpdesk_tickets.assignedto=phpgw_accounts.account_id";
-//                                     $order = 'account_lastname';
+                                       $result_order_field = 
',account_lastname';
+                                       $order = 'account_lastname';
                                }
                                else if( $order == 'user' )
                                {
                                        $result_order_field = 
',account_lastname';
                                        $order = 'account_lastname';
                                }
-                               else
-                               {
-                                       $order_join = '';
-                               }
 
                                $ordermethod = " ORDER BY $order $sort";
                        }
@@ -180,15 +175,6 @@
                                $where= 'AND';
                        }
 
-                       
if(isset($GLOBALS['phpgw']->config->config_data['acl_at_location']) && 
$GLOBALS['phpgw']->config->config_data['acl_at_location'])
-                       {
-                               $access_location = 
execMethod('property.socommon.get_location_list', PHPGW_ACL_READ);
-                               if($access_location)
-                               {
-                                       $filtermethod .= " $where 
phpgw_helpdesk_tickets.loc1 in ('" . implode("','", $access_location) . "')";
-                                       $where= 'AND';
-                               }
-                       }
 
                        if (is_array($this->grants))
                        {
@@ -224,12 +210,6 @@
                                }
                        }
 
-                       if($tenant_id = 
$GLOBALS['phpgw']->session->appsession('tenant_id','helpdesk'))
-                       {
-                               $filtermethod .= $where . ' 
phpgw_helpdesk_tickets.tenant_id=' . $tenant_id;
-                               $where = 'AND';
-                       }
-
                        if ($status_id == 'X')
                        {
                                $closed = '';
@@ -352,7 +332,6 @@
                                . " $filtermethod $querymethod";
 
                        $sql2 = "SELECT count(*) as cnt FROM ({$sql}) as t";
-                       _debug_array($sql2);
                        $this->db->query($sql2,__LINE__,__FILE__);
                        $this->db->next_record();
                        $this->total_records = $this->db->f('cnt');
@@ -361,6 +340,10 @@
                        $tickets = array();
                        if(!$dry_run)
                        {
+                               $location_id = 
$GLOBALS['phpgw']->locations->get_id('helpdesk', '.ticket');
+                               $custom_cols = $this->custom->find('helpdesk', 
'.ticket', 0, '', 'ASC', 'attrib_sort', true, true);
+                               $_return_field_array = array();
+
                                if(!$allrows)
                                {
                                        $this->db->limit_query($sql . 
$ordermethod,$start,__LINE__,__FILE__);
@@ -379,42 +362,41 @@
                                        unset($_fetch_single);
                                }
 
+                               $i = 0;
                                while ($this->db->next_record())
                                {
                                        $tickets[]= array
-                                               (
-                                                       'id'                    
        => (int) $this->db->f('id'),
-                                                       'subject'               
        => $this->db->f('subject',true),
-                                                       'user_id'               
        => $this->db->f('user_id'),
-                                                       'assignedto'            
=> $this->db->f('assignedto'),
-                                                       'status'                
        => $this->db->f('status'),
-                                                       'priority'              
        => $this->db->f('priority'),
-                                                       'cat_id'                
        => $this->db->f('cat_id'),
-                                                       'group_id'              
        => $this->db->f('group_id'),
-                                                       'entry_date'            
=> $this->db->f('entry_date'),
-                                                       'finnish_date'          
=> $this->db->f('finnish_date'),
-                                                       'finnish_date2'         
=> $this->db->f('finnish_date2'),
-                                                       'order_id'              
        => $this->db->f('order_id'),
-                                                       'vendor_id'             
        => $this->db->f('vendor_id'),
-                                                       'actual_cost'           
=> $this->db->f('actual_cost'),
-                                                       'estimate'              
        => $this->db->f('budget'),
-                                                       'new_ticket'            
=> $this->db->f('view') ? false : true,
-                                                       'billable_hours'        
=> $this->db->f('billable_hours'),
-                                               );
-                               }
-/*                     
-                               foreach ($tickets as &$ticket)
-                               {
-                                       $this->db->query("SELECT count(*) as 
hits FROM phpgw_helpdesk_views where id={$ticket['id']}"
-                                               . " AND 
account_id='{$this->account}'",__LINE__,__FILE__);
-                                       $this->db->next_record();
-
-                                       if(! $this->db->f('hits'))
+                                       (
+                                               'id'                            
=> (int) $this->db->f('id'),
+                                               'subject'                       
=> $this->db->f('subject',true),
+                                               'user_id'                       
=> $this->db->f('user_id'),
+                                               'assignedto'            => 
$this->db->f('assignedto'),
+                                               'status'                        
=> $this->db->f('status'),
+                                               'priority'                      
=> $this->db->f('priority'),
+                                               'cat_id'                        
=> $this->db->f('cat_id'),
+                                               'group_id'                      
=> $this->db->f('group_id'),
+                                               'entry_date'            => 
$this->db->f('entry_date'),
+                                               'modified_date'         => 
$this->db->f('modified_date'),
+                                               'finnish_date'          => 
$this->db->f('finnish_date'),
+                                               'finnish_date2'         => 
$this->db->f('finnish_date2'),
+                                               'order_id'                      
=> $this->db->f('order_id'),
+                                               'vendor_id'                     
=> $this->db->f('vendor_id'),
+                                               'actual_cost'           => 
$this->db->f('actual_cost'),
+                                               'estimate'                      
=> $this->db->f('budget'),
+                                               'new_ticket'            => 
$this->db->f('view') ? false : true,
+                                               'billable_hours'        => 
$this->db->f('billable_hours'),
+                                       );
+                                       foreach ($custom_cols as $custom_col)
                                        {
-                                               $ticket['new_ticket'] = true;
+                                               if ($custom_value = 
$this->db->f($custom_col['column_name'], true))
+                                               {
+                                                       $custom_value = 
$this->custom->get_translated_value(array('value' => $custom_value,
+                                                               'attrib_id' => 
$custom_col['id'], 'datatype' => $custom_col['datatype']), $location_id);
+                                               }
+                                               
$tickets[$i][$custom_col['column_name']] = $custom_value;
                                        }
+                                       $i ++;
                                }
- */
                        }
 
                        return $tickets;
@@ -445,11 +427,75 @@
                        return $entity;
                }
 
-               function read_single($id)
+               function read_single($id, $values = array() )
                {
                        $id = (int) $id;
-                       $sql = "SELECT * FROM phpgw_helpdesk_tickets WHERE id = 
{$id}";
 
+
+                       $GLOBALS['phpgw']->acl->set_account_id($this->account);
+                       $this->grants   = 
$GLOBALS['phpgw']->acl->get_grants2('helpdesk','.ticket');
+
+                       $acl_join = "{$this->join} phpgw_accounts ON 
phpgw_helpdesk_tickets.user_id=phpgw_accounts.account_id";
+                       $acl_join .= " {$this->join} phpgw_group_map ON 
(phpgw_accounts.account_id = phpgw_group_map.account_id)";
+
+                       $categories = 
$GLOBALS['phpgw']->locations->get_subs('helpdesk', '.ticket.category');
+
+                       $grant_category = array();
+                       foreach ($categories as $location)
+                       {
+                               if ($GLOBALS['phpgw']->acl->check($location, 
PHPGW_ACL_READ, 'helpdesk'))
+                               {
+                                       $category = explode('.',$location);
+                                       $grant_category[] = $category[3];
+                               }
+                       }
+
+                       $grant_category[] = -1;//If no one found - not breaking 
the query
+
+
+                       $GLOBALS['phpgw']->config->read();
+
+                       $filtermethod = '';
+                       
if(isset($GLOBALS['phpgw']->config->config_data['acl_at_tts_category']) && 
$GLOBALS['phpgw']->config->config_data['acl_at_tts_category'])
+                       {
+                               $filtermethod = " AND 
phpgw_helpdesk_tickets.cat_id IN (" . implode(",", $grant_category) . ")";
+                       }
+
+
+                       if (is_array($this->grants))
+                       {
+                               $public_user_list = array();
+                               if (is_array($this->grants['accounts']) && 
$this->grants['accounts'])
+                               {
+                                       foreach($this->grants['accounts'] as 
$user => $_right)
+                                       {
+                                               $public_user_list[] = $user;
+                                       }
+                                       unset($user);
+                                       reset($public_user_list);
+                                       $filtermethod .= " AND 
(phpgw_helpdesk_tickets.user_id IN(" . implode(',', $public_user_list) . ")";
+                               }
+
+                               $public_group_list = array();
+                               if (is_array($this->grants['groups']) && 
$this->grants['groups'])
+                               {
+                                       foreach($this->grants['groups'] as 
$user => $_right)
+                                       {
+                                               $public_group_list[] = $user;
+                                       }
+                                       unset($user);
+                                       reset($public_group_list);
+                                       $where = $public_user_list ? 'OR' : 
'AND';
+                                       $filtermethod .= " $where 
phpgw_group_map.group_id IN(" . implode(',', $public_group_list) . "))";
+                               }
+                               if($public_user_list && !$public_group_list)
+                               {
+                                       $filtermethod .=')';
+                               }
+                       }
+
+                       $sql = "SELECT * FROM phpgw_helpdesk_tickets 
{$acl_join} WHERE id = {$id} {$filtermethod}";
+
                        $this->db->query($sql,__LINE__,__FILE__);
 
                        if ($this->db->next_record())
@@ -485,6 +531,7 @@
                                $ticket['order_dim1']           = 
$this->db->f('order_dim1');
                                $ticket['publish_note']         = 
$this->db->f('publish_note');
                                $ticket['billable_hours']       = 
$this->db->f('billable_hours');
+                               $ticket['modified_date'] = 
$this->db->f('modified_date');
 
                                $user_id=(int)$this->db->f('user_id');
 
@@ -493,6 +540,15 @@
                                {
                                        $ticket['assignedto_name']      = 
$GLOBALS['phpgw']->accounts->get($ticket['assignedto'])->__toString();
                                }
+
+                               if (isset($values['attributes']) && 
is_array($values['attributes']))
+                               {
+                                       $ticket['attributes'] = 
$values['attributes'];
+                                       foreach ($ticket['attributes'] as 
&$attr)
+                                       {
+                                               $attr['value'] = 
$this->db->f($attr['column_name']);
+                                       }
+                               }
                        }
 
                        return $ticket;
@@ -513,101 +569,48 @@
                        }
                }
 
-               function add($ticket)
+               function add( &$ticket, $values_attribute = array() )
                {
-                       if(isset($ticket['location']) && 
is_array($ticket['location']))
-                       {
-                               foreach ($ticket['location'] as $input_name => 
$value)
-                               {
-                                       if(isset($value) && $value)
-                                       {
-                                               $cols[] = $input_name;
-                                               $vals[] = $value;
-                                       }
-                               }
-                       }
+                       $table = 'phpgw_helpdesk_tickets';
 
-                       if(isset($ticket['extra']) && 
is_array($ticket['extra']))
+                       $value_set = array();
+                       $data_attribute = $this->custom->prepare_for_db($table, 
$values_attribute);
+                       if (isset($data_attribute['value_set']))
                        {
-                               foreach ($ticket['extra'] as $input_name => 
$value)
+                               foreach ($data_attribute['value_set'] as 
$input_name => $value)
                                {
-                                       if(isset($value) && $value)
+                                       if (isset($value) && $value)
                                        {
-                                               $cols[] = $input_name;
-                                               $vals[] = $value;
+                                               $value_set[$input_name] = 
$value;
                                        }
                                }
                        }
 
-                       if($cols)
-                       {
-                               $cols   = "," . implode(",", $cols);
-                               $vals   = ",'" . implode("','", $vals) . "'";
-                       }
+                       $value_set['priority'] = isset($ticket['priority']) ? 
$ticket['priority'] : 0;
+                       $value_set['user_id'] = 
$GLOBALS['phpgw_info']['user']['account_id'];
+                       $value_set['assignedto'] = $ticket['assignedto'];
+                       $value_set['group_id'] = $ticket['group_id'];
+                       $value_set['subject'] = 
$this->db->db_addslashes($ticket['subject']);
+                       $value_set['cat_id'] = $ticket['cat_id'];
+                       $value_set['status'] = $ticket['status'];
+                       $value_set['details'] = 
$this->db->db_addslashes($ticket['details']);
+                       $value_set['location_code'] = $ticket['location_code'];
+                       $value_set['entry_date'] = time();
+                       $value_set['modified_date'] = time();
+                       $value_set['finnish_date'] = $ticket['finnish_date'];
+                       $value_set['contact_id'] = $ticket['contact_id'];
+                       $value_set['publish_note'] = 1;
 
-                       $address = '';
-                       if(isset($ticket['street_name']) && 
$ticket['street_name'])
-                       {
-                               $address[]= $ticket['street_name'];
-                               $address[]= $ticket['street_number'];
-                               $address        = 
$this->db->db_addslashes(implode(" ", $address));
-                       }
 
-                       if(!$address)
-                       {
-                               $address = 
$this->db->db_addslashes($ticket['location_name']);
-                       }
-
-                       $values= array
-                               (
-                                       
isset($ticket['priority'])?$ticket['priority']:0,
-                                       
$GLOBALS['phpgw_info']['user']['account_id'],
-                                       $ticket['assignedto'],
-                                       $ticket['group_id'],
-                                       
$this->db->db_addslashes($ticket['subject']),
-                                       $ticket['cat_id'],
-                                       $ticket['status'],
-                                       
$this->db->db_addslashes($ticket['details']),
-                                       $ticket['location_code'],
-                                       $address,
-                                       time(),
-                                       $ticket['finnish_date'],
-                                       $ticket['contact_id'],
-                                       1
-                               );
-
-                       $values = $this->db->validate_insert($values);
+                       $cols = implode(',', array_keys($value_set));
+                       $values = 
$this->db->validate_insert(array_values($value_set));
                        $this->db->transaction_begin();
 
-                       $this->db->query("insert into phpgw_helpdesk_tickets 
(priority,user_id,"
-                               . 
"assignedto,group_id,subject,cat_id,status,details,location_code,"
-                               . 
"address,entry_date,finnish_date,contact_id,publish_note $cols)"
-                               . "VALUES ($values $vals )",__LINE__,__FILE__);
+                       $this->db->query("INSERT INTO {$table} ({$cols}) VALUES 
({$values})", __LINE__, __FILE__);
 
-                       $id = 
$this->db->get_last_insert_id('phpgw_helpdesk_tickets','id');
-                       if(isset($ticket['extra']['contact_phone']) && 
$ticket['extra']['contact_phone'] && isset($ticket['extra']['tenant_id']) && 
$ticket['extra']['tenant_id'])
-                       {
-                               $this->db->query("update fm_tenant set 
contact_phone='". $ticket['extra']['contact_phone']. "' where id='". 
$ticket['extra']['tenant_id']. "'",__LINE__,__FILE__);
-                       }
+                       $id = $this->db->get_last_insert_id($table, 'id');
 
-                       if(isset($ticket['origin']) && 
is_array($ticket['origin']))
-                       {
-                               if($ticket['origin'][0]['data'][0]['id'])
-                               {
-                                       $interlink_data = array
-                                               (
-                                                       'location1_id'          
=> $GLOBALS['phpgw']->locations->get_id('helpdesk', 
$ticket['origin'][0]['location']),
-                                                       'location1_item_id' => 
$ticket['origin'][0]['data'][0]['id'],
-                                                       'location2_id'          
=> $GLOBALS['phpgw']->locations->get_id('helpdesk', '.ticket'),                 
-                                                       'location2_item_id' => 
$id,
-                                                       'account_id'            
=> $this->account
-                                               );
 
-                                       $interlink      = 
CreateObject('helpdesk.interlink');
-                                       
$interlink->add($interlink_data,$this->db);
-                               }
-                       }
-
                        if($this->db->transaction_commit())
                        {
                                $this->historylog->add('O',$id, time(),'');
@@ -700,6 +703,7 @@
 
                        if ($this->fields_updated)
                        {
+                               $this->db->query('UPDATE phpgw_helpdesk_tickets 
SET modified_date= ' . time() . " WHERE id={$id}", __LINE__, __FILE__);
                                $receipt['message'][]= array('msg' => 
lang('Ticket %1 has been updated',$id));
                        }
 
@@ -707,383 +711,332 @@
 
                }
 
-               function update_ticket($ticket,$id = 0)
+               function update_priority( $ticket, $id = 0 )
                {
-                       $id = (int) $id;
+                       $id = (int)$id;
                        $receipt = array();
+                       $this->fields_updated = false;
+
+                       $this->db->query("SELECT priority FROM 
phpgw_helpdesk_tickets WHERE id={$id}", __LINE__, __FILE__);
+                       $this->db->next_record();
+                       $oldpriority = $this->db->f('priority');
+
+                       $this->db->transaction_begin();
+
+                       if ($oldpriority != $ticket['priority'])
+                       {
+                               $this->fields_updated = true;
+                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
set priority='" . $ticket['priority']
+                                       . "' WHERE id={$id}", __LINE__, 
__FILE__);
+                               $this->historylog->add('P', $id, 
$ticket['priority'], $oldpriority);
+                       }
+
+                       if ($this->fields_updated)
+                       {
+                               $this->db->query('UPDATE phpgw_helpdesk_tickets 
SET modified_date= ' . time() . " WHERE id={$id}", __LINE__, __FILE__);
+                               $receipt['message'][] = array('msg' => 
lang('Ticket %1 has been updated', $id));
+                       }
+
+                       $this->db->transaction_commit();
+
+                       return $receipt;
+               }
+
+               function update_ticket( &$ticket, $id = 0, $receipt = array(), 
$values_attribute = array(), $simple = false )
+               {
+                       $this->fields_updated = array();
+                       $id = (int)$id;
+                       $ticket['id'] = $id;
                        // DB Content is fresher than http posted value.
-                       $this->db->query("select * from phpgw_helpdesk_tickets 
where id='$id'",__LINE__,__FILE__);
+                       $this->db->query("SELECT * FROM phpgw_helpdesk_tickets 
WHERE id='$id'", __LINE__, __FILE__);
                        $this->db->next_record();
 
-                       $location_code  = $this->db->f('location_code');
-                       $oldlocation_code       = $this->db->f('location_code');
-                       $oldfinnish_date        = $this->db->f('finnish_date');
-                       $oldfinnish_date2       = $this->db->f('finnish_date2');
-                       $oldassigned            = $this->db->f('assignedto');
-                       $oldgroup_id            = $this->db->f('group_id');
-                       $oldpriority            = $this->db->f('priority');
-                       $oldcat_id                      = 
$this->db->f('cat_id');
-                       $old_status             = $this->db->f('status');
-                       $old_budget             = $this->db->f('budget');
-                       $old_billable_hours     = 
$this->db->f('billable_hours');
+                       $location_code = $this->db->f('location_code');
+                       $oldlocation_code = $this->db->f('location_code');
+                       $oldfinnish_date = $this->db->f('finnish_date');
+                       $oldfinnish_date2 = $this->db->f('finnish_date2');
+                       $oldassigned = $this->db->f('assignedto');
+                       $oldgroup_id = $this->db->f('group_id');
+                       $oldpriority = $this->db->f('priority');
+                       $oldcat_id = $this->db->f('cat_id');
+                       $old_status = $this->db->f('status');
+                       $ticket['old_status'] = $old_status; // used for custom 
functions
+                       //      $old_budget                     = 
$this->db->f('budget');
+                       $old_billable_hours = 
(float)$this->db->f('billable_hours');
                        //      $old_billable_rate      = 
$this->db->f('billable_rate');
-                       $old_subject            = $this->db->f('subject');
-                       $old_contact_id         = $this->db->f('contact_id');
-                       $old_actual_cost        = $this->db->f('actual_cost');
-                       $old_order_cat_id       = $this->db->f('order_cat_id');
-                       $old_building_part      = 
$this->db->f('building_part',true);
-                       $old_order_dim1         = 
(int)$this->db->f('order_dim1');
+                       $old_subject = $this->db->f('subject');
+                       $old_contact_id = $this->db->f('contact_id');
+                       $old_order_cat_id = $this->db->f('order_cat_id');
+                       $old_building_part = $this->db->f('building_part', 
true);
+                       $old_order_dim1 = (int)$this->db->f('order_dim1');
 
 
-                       if($oldcat_id ==0){$oldcat_id ='';}
-                       if($old_order_cat_id ==0){$old_order_cat_id ='';}
-                               if($oldassigned ==0){$oldassigned ='';}
-                                       if($oldgroup_id ==0){$oldgroup_id ='';}
+                       if ($oldcat_id == 0)
+                       {
+                               $oldcat_id = '';
+                       }
+                       if ($old_order_cat_id == 0)
+                       {
+                               $old_order_cat_id = '';
+                       }
+                       if ($oldassigned == 0)
+                       {
+                               $oldassigned = '';
+                       }
+                       if ($oldgroup_id == 0)
+                       {
+                               $oldgroup_id = '';
+                       }
 
-                                               // Figure out and last note
+                       // Figure out and last note
 
-                                               $history_values = 
$this->historylog->return_array(array(),array('C'),'history_timestamp','DESC',$id);
+                       $history_values = 
$this->historylog->return_array(array(), array('C'), 'history_timestamp', 
'DESC', $id);
                        $old_note = $history_values[0]['new_value'];
 
-                       if(!$old_note)
+                       if (!$old_note)
                        {
                                $old_note = $this->db->f('details');
                        }
 
-
                        $this->db->transaction_begin();
 
                        /*
-                        ** phpgw_phpgw_helpdesk_append.append_type - Defs
-                        ** R - Reopen ticket
-                        ** X - Ticket closed
-                        ** O - Ticket opened
-                        ** C - Comment appended
-                        ** A - Ticket assignment
-                        ** G - Ticket group assignment
-                        ** P - Priority change
-                        ** T - Category change
-                        ** S - Subject change
-                        ** B - Budget change
-                        ** H - Billing hours
-                        ** F - finnish date
-                        ** C% - Status change
-                        ** L - Location changed
-                        ** M - Mail sent to vendor
+                        * * phpgw_fm_tts_append.append_type - Defs
+                        * * R - Reopen ticket
+                        * * X - Ticket closed
+                        * * O - Ticket opened
+                        * * C - Comment appended
+                        * * A - Ticket assignment
+                        * * G - Ticket group assignment
+                        * * P - Priority change
+                        * * T - Category change
+                        * * S - Subject change
+                        * * B - Budget change
+                        * *    AC - actual cost changed
+                        * * H - Billing hours
+                        * * F - finnish date
+                        * * C% - Status change
+                        * * L - Location changed
+                        * * M - Mail sent to vendor
                         */
 
-                       $this->db->query("UPDATE phpgw_helpdesk_tickets SET 
publish_note = NULL WHERE id = {$id}",__LINE__,__FILE__);
-                       $this->db->query("UPDATE phpgw_history_log SET publish 
= NULL WHERE history_record_id = {$id}",__LINE__,__FILE__);
-                       if(isset($ticket['publish_note']))
+                       if (!$simple)
                        {
-                               foreach ($ticket['publish_note'] as 
$publish_info)
+                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET publish_note = NULL WHERE id = {$id}", __LINE__, __FILE__);
+                               $this->db->query("UPDATE phpgw_history_log SET 
publish = NULL WHERE history_record_id = {$id}", __LINE__, __FILE__);
+                               if (isset($ticket['publish_note']))
                                {
-                                       $note = explode('_', $publish_info);
-                                       if(!$note[1])
+                                       foreach ($ticket['publish_note'] as 
$publish_info)
                                        {
-                                               $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET publish_note = 1 WHERE id = 
{$note[0]}",__LINE__,__FILE__);
+                                               $note = explode('_', 
$publish_info);
+                                               if (!$note[1])
+                                               {
+                                                       
$this->db->query("UPDATE phpgw_helpdesk_tickets SET publish_note = 1 WHERE id = 
{$note[0]}", __LINE__, __FILE__);
+                                               }
+                                               else
+                                               {
+                                                       
$this->db->query("UPDATE phpgw_history_log SET publish = 1 WHERE history_id = 
{$note[1]}", __LINE__, __FILE__);
+                                               }
                                        }
-                                       else
-                                       {
-                                               $this->db->query("UPDATE 
phpgw_history_log SET publish = 1 WHERE history_id = 
{$note[1]}",__LINE__,__FILE__);
-                                       }
                                }
-                       }
+                               if ($ticket['assignedto'] && ( ($oldassigned != 
$ticket['assignedto']) && $ticket['assignedto'] != 'ignore'))
+                               {
+                                       $this->fields_updated[] = 'assignedto';
 
-                       $finnish_date   = (isset($ticket['finnish_date']) ? 
phpgwapi_datetime::date_to_timestamp($ticket['finnish_date']):'');
+                                       $value_set = array('assignedto' => 
$ticket['assignedto']);
+                                       $value_set = 
$this->db->validate_update($value_set);
 
-                       if ($oldfinnish_date && isset($ticket['finnish_date']) 
&& $ticket['finnish_date'])
-                       {
-                               $this->db->query("update phpgw_helpdesk_tickets 
set finnish_date2='" . $finnish_date
-                                       . "' where id='$id'",__LINE__,__FILE__);
-                       }
-                       else if(!$oldfinnish_date && 
isset($ticket['finnish_date']) && $ticket['finnish_date'])
-                       {
-                               $this->db->query("update phpgw_helpdesk_tickets 
set finnish_date='" . $finnish_date
-                                       . "' where id='$id'",__LINE__,__FILE__);
-                       }
+                                       $this->db->query("update 
phpgw_helpdesk_tickets set $value_set where id='$id'", __LINE__, __FILE__);
+                                       $this->historylog->add('A', $id, 
$ticket['assignedto'], $oldassigned);
+                               }
 
-                       if($oldfinnish_date2>0)
-                       {
-                               $oldfinnish_date = $oldfinnish_date2;
-                       }
-                       if(isset($ticket['finnish_date']) && 
$ticket['finnish_date'])
-                       {
-                               if ($oldfinnish_date != $finnish_date)
+                               if (($oldgroup_id != $ticket['group_id']) && 
$ticket['group_id'] != 'ignore')
                                {
-                                       $this->fields_updated = true;
-                                       
$this->historylog->add('F',$id,$finnish_date,$oldfinnish_date);
+                                       $this->fields_updated[] = 'group_id';
+
+                                       $value_set = array('group_id' => 
$ticket['group_id']);
+                                       $value_set = 
$this->db->validate_update($value_set);
+
+                                       $this->db->query("update 
phpgw_helpdesk_tickets set $value_set where id='$id'", __LINE__, __FILE__);
+                                       $this->historylog->add('G', $id, 
(int)$ticket['group_id'], $oldgroup_id);
                                }
-                       }
 
-                       if (isset($ticket['status']) && ($old_status != 
$ticket['status']))
-                       {
-                               $check_old_custom = (int) trim($old_status,'C');
-                               $this->db->query("SELECT * from 
phpgw_helpdesk_status WHERE id = {$check_old_custom}",__LINE__,__FILE__);
-                               $this->db->next_record();
-                               $this->fields_updated = true;
-                               if($old_status=='X' || $this->db->f('closed'))
+                               if ($ticket['priority'] && $oldpriority != 
$ticket['priority'])
                                {
-                                       $new_status = $ticket['status'];
-                                       
$this->historylog->add('R',$id,$ticket['status'],$old_status);
+                                       $this->fields_updated[] = 'priority';
+                                       $this->db->query("update 
phpgw_helpdesk_tickets set priority='" . $ticket['priority']
+                                               . "' where id='$id'", __LINE__, 
__FILE__);
+                                       $this->historylog->add('P', $id, 
$ticket['priority'], $oldpriority);
+                               }
 
-                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET status='{$new_status}' WHERE id= 
{$id}",__LINE__,__FILE__);
+                               if ($old_contact_id != $ticket['contact_id'])
+                               {
+                                       $contact_id = 
(int)$ticket['contact_id'];
+                                       $this->fields_updated[] = 'contact_id';
+                                       $this->db->query("update 
phpgw_helpdesk_tickets set contact_id={$contact_id} WHERE id=$id", __LINE__, 
__FILE__);
                                }
-                               else
+
+                               if ($ticket['cat_id'] && ( ($oldcat_id != 
$ticket['cat_id']) && $ticket['cat_id'] != 'ignore'))
                                {
-                                       
$this->historylog->add($ticket['status'],$id,$ticket['status'],$old_status);
-                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET status='{$ticket['status']}' WHERE 
id={$id}",__LINE__,__FILE__);
+                                       $this->fields_updated[] = 'cat_id';
+                                       $this->db->query("update 
phpgw_helpdesk_tickets set cat_id='" . $ticket['cat_id']
+                                               . "' where id='$id'", __LINE__, 
__FILE__);
+                                       $this->historylog->add('T', $id, 
$ticket['cat_id'], $oldcat_id);
                                }
-                               $this->check_pending_action($ticket, $id);
                        }
 
-                       if (($oldassigned != $ticket['assignedto']) && 
$ticket['assignedto'] != 'ignore')
+                       if (($old_note != $ticket['note']) && $ticket['note'])
                        {
-                               $this->fields_updated = true;
-
-                               $value_set=array('assignedto'   => 
$ticket['assignedto']);
-                               $value_set      = 
$this->db->validate_update($value_set);
-
-                               $this->db->query("update phpgw_helpdesk_tickets 
set $value_set where id='$id'",__LINE__,__FILE__);
-                               
$this->historylog->add('A',$id,$ticket['assignedto'],$oldassigned);
+                               $this->fields_updated[] = 'note';
+                               $this->historylog->add('C', $id, 
$ticket['note'], $old_note);
+                               $_history_id = 
$this->db->get_last_insert_id('phpgw_history_log', 'history_id');
+                               $this->db->query("UPDATE phpgw_history_log SET 
publish = 1 WHERE history_id = $_history_id", __LINE__, __FILE__);
+                               unset($_history_id);
                        }
 
-                       if (($oldgroup_id != $ticket['group_id']) && 
$ticket['group_id'] != 'ignore')
-                       {
-                               $this->fields_updated = true;
+                       $value_set = array();
 
-                               $value_set=array('group_id'     => 
$ticket['group_id']);
-                               $value_set      = 
$this->db->validate_update($value_set);
+                       $data_attribute = 
$this->custom->prepare_for_db('phpgw_helpdesk_tickets', $values_attribute);
 
-                               $this->db->query("update phpgw_helpdesk_tickets 
set $value_set where id='$id'",__LINE__,__FILE__);
-                               
$this->historylog->add('G',$id,$ticket['group_id'],$oldgroup_id);
-                       }
-
-                       if ($oldpriority != $ticket['priority'])
+                       if (isset($data_attribute['value_set']))
                        {
-                               $this->fields_updated = true;
-                               $this->db->query("update phpgw_helpdesk_tickets 
set priority='" . $ticket['priority']
-                                       . "' where id='$id'",__LINE__,__FILE__);
-                               
$this->historylog->add('P',$id,$ticket['priority'],$oldpriority);
+                               foreach ($data_attribute['value_set'] as 
$input_name => $value)
+                               {
+                                       $this->fields_updated[] = $input_name;
+                                       $value_set[$input_name] = $value;
+                               }
                        }
 
-                       if ($old_contact_id != $ticket['contact_id'])
-                       {
-                               $contact_id  = (int) $ticket['contact_id'];
-                               $this->fields_updated = true;
-                               $this->db->query("update phpgw_helpdesk_tickets 
set contact_id={$contact_id} WHERE id=$id",__LINE__,__FILE__);
-                       }
+                       $value_set['modified_date'] = time();
 
-                       if (($oldcat_id != $ticket['cat_id']) && 
$ticket['cat_id'] != 'ignore')
-                       {
-                               $this->fields_updated = true;
-                               $this->db->query("update phpgw_helpdesk_tickets 
set cat_id='" . $ticket['cat_id']
-                                       . "' where id='$id'",__LINE__,__FILE__);
-                               
$this->historylog->add('T',$id,$ticket['cat_id'],$oldcat_id);
-                       }
+                       $value_set = $this->db->validate_update($value_set);
+                       $this->db->query("UPDATE phpgw_helpdesk_tickets SET 
$value_set WHERE id={$id}", __LINE__, __FILE__);
 
-                       if ($old_budget != $ticket['budget'])
+                       if (isset($this->fields_updated) && 
$this->fields_updated && $simple)
                        {
-                               $this->fields_updated = true;
-                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
set budget='" . (int)$ticket['budget']
-                                       . "' where id='$id'",__LINE__,__FILE__);
-                               
$this->historylog->add('B',$id,$ticket['budget'],$old_budget);
+                               $receipt['message'][] = array('msg' => 
lang('Ticket has been updated'));
+                               $this->db->transaction_commit();
+                               return $receipt;
                        }
-       /*
-                       if ($old_billable_rate != $ticket['billable_rate'])
-                       {
-                               $this->fields_updated = true;
-                               $this->db->query("update phpgw_helpdesk_tickets 
set billable_rate='" . $ticket['billable_rate']
-                                       . "' where id='$id'",__LINE__,__FILE__);
-                               
$this->historylog->add('B',$id,$ticket['billable_rate'],$old_billable_rate);
-                       }
-        */
-                       if ($old_subject != $ticket['subject'])
-                       {
-                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET subject='" . $ticket['subject']
-                                       . "' where id='$id'",__LINE__,__FILE__);
-                               
$this->historylog->add('S',$id,$ticket['subject'],$old_subject);
-                               $receipt['message'][]= array('msg' => 
lang('Subject has been updated'));
-                       }
 
-                       if($ticket['billable_hours'])
-                       {
-                               $ticket['billable_hours'] = 
str_replace(',','.', $ticket['billable_hours']);
-                       }
-                       if ((float)$old_billable_hours != 
(float)$ticket['billable_hours'])
-                       {
-                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET billable_hours='{$ticket['billable_hours']}'"
-                                       . " WHERE 
id='{$id}'",__LINE__,__FILE__);
-                               
$this->historylog->add('H',$id,$ticket['billable_hours'],$old_billable_hours);
-                               $receipt['message'][]= array('msg' => 
lang('billable hours has been updated'));
-                       }
+                       $finnish_date = (isset($ticket['finnish_date']) ? 
phpgwapi_datetime::date_to_timestamp($ticket['finnish_date']) : '');
 
-                       if ((int)$old_actual_cost != 
(int)$ticket['actual_cost'])
+                       if ($oldfinnish_date && isset($ticket['finnish_date']) 
&& $ticket['finnish_date'])
                        {
-                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET actual_cost='" . (float)$ticket['actual_cost']
-                                       . "' WHERE id='$id'",__LINE__,__FILE__);
-                               
$this->historylog->add('AC',$id,(float)$ticket['actual_cost'] , 
$old_actual_cost);
-                               $receipt['message'][]= array('msg' => 
lang('actual_cost has been updated'));
+                               $this->db->query("update phpgw_helpdesk_tickets 
set finnish_date2='" . $finnish_date
+                                       . "' where id='$id'", __LINE__, 
__FILE__);
                        }
-
-                       if ((int)$old_order_cat_id != 
(int)$ticket['order_cat_id'])
+                       else if (!$oldfinnish_date && 
isset($ticket['finnish_date']) && $ticket['finnish_date'])
                        {
-                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET order_cat_id='" . (int)$ticket['order_cat_id']
-                                       . "' WHERE id='$id'",__LINE__,__FILE__);
-                               $receipt['message'][]= array('msg' => 
lang('order category has been updated'));
-                               $this->fields_updated = true;
+                               $this->db->query("update phpgw_helpdesk_tickets 
set finnish_date='" . $finnish_date
+                                       . "' where id='$id'", __LINE__, 
__FILE__);
                        }
 
-                       if ((int)$old_order_dim1 != (int)$ticket['order_dim1'])
+                       if ($oldfinnish_date2 > 0)
                        {
-                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET order_dim1='" . (int)$ticket['order_dim1']
-                                       . "' WHERE id='$id'",__LINE__,__FILE__);
-                               $receipt['message'][]= array('msg' => 
lang('order_dim1 has been updated'));
-                               $this->fields_updated = true;
+                               $oldfinnish_date = $oldfinnish_date2;
                        }
-
-                       if ($old_building_part != $ticket['building_part'])
+                       if (isset($ticket['finnish_date']) && 
$ticket['finnish_date'])
                        {
-                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET building_part='" . $ticket['building_part']
-                                       . "' WHERE id='$id'",__LINE__,__FILE__);
-                               $receipt['message'][]= array('msg' => 
lang('building part has been updated'));
-                               $this->fields_updated = true;
+                               if ($oldfinnish_date != $finnish_date)
+                               {
+                                       $this->fields_updated[] = 
'finnish_date';
+                                       $this->historylog->add('F', $id, 
$finnish_date, $oldfinnish_date);
+                               }
                        }
 
-                       if (($old_note != $ticket['note']) && $ticket['note'])
+                       if (isset($ticket['status']) && ($old_status != 
$ticket['status']))
                        {
-                               $this->fields_updated = true;
-                               
$this->historylog->add('C',$id,$ticket['note'],$old_note);
-                               $_history_id = 
$this->db->get_last_insert_id('phpgw_history_log','history_id');
-                               $this->db->query("UPDATE phpgw_history_log SET 
publish = 1 WHERE history_id = $_history_id",__LINE__,__FILE__);
-                               unset($_history_id);
-                       }
-
-                       if(isset($ticket['location']) && $ticket['location'])
-                       {
-                               $ticket['location_code'] = implode('-', 
$ticket['location']);
-                       }
-
-                       if (isset($ticket['location_code']) && 
$ticket['location_code'] && ($oldlocation_code != $ticket['location_code']))
-                       {
-                               $interlink      = 
CreateObject('helpdesk.interlink');
-                               if( $interlink->get_relation('helpdesk', 
'.ticket', $id, 'origin') || $interlink->get_relation('helpdesk', '.ticket', 
$id, 'target'))
+                               $check_old_custom = (int)trim($old_status, 'C');
+                               $this->db->query("SELECT * from 
phpgw_helpdesk_status WHERE id = {$check_old_custom}", __LINE__, __FILE__);
+                               $this->db->next_record();
+                               $old_closed = $this->db->f('closed');
+                               $this->fields_updated[] = 'status';
+                               if ($old_status == 'X' || $old_closed)
                                {
-                                       $receipt['message'][]= array('msg' => 
lang('location could not be changed'));
+                                       $new_status = $ticket['status'];
+                                       $this->historylog->add('R', $id, 
$ticket['status'], $old_status);
+
+                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET status='{$new_status}' WHERE id= {$id}", __LINE__, 
__FILE__);
                                }
                                else
                                {
-                                       $value_set      = array();
+                                       
$this->historylog->add($ticket['status'], $id, $ticket['status'], $old_status);
+                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET status='{$ticket['status']}' WHERE id={$id}", 
__LINE__, __FILE__);
+                               }
+                               $this->check_pending_action($ticket, $id);
 
-                                       if(isset($ticket['street_name']) && 
$ticket['street_name'])
-                                       {
-                                               $address[]= 
$ticket['street_name'];
-                                               $address[]= 
$ticket['street_number'];
-                                               $value_set['address'] = 
$this->db->db_addslashes(implode(" ", $address));
-                                       }
+                               //Close cases at related
+                               $check_new_custom = 
(int)trim($ticket['status'], 'C');
+                               $this->db->query("SELECT closed from 
phpgw_helpdesk_status WHERE id = {$check_new_custom}", __LINE__, __FILE__);
+                               $this->db->next_record();
 
-                                       if(!isset($address) || !$address)
+                               if (($this->db->f('closed') || 
$ticket['status'] == 'X') && ($old_status != 'X' && !$old_closed))
+                               {
+                                       $location_id = 
$GLOBALS['phpgw']->locations->get_id('helpdesk', '.ticket');
+                                       // at controller
+                                       if 
(isset($GLOBALS['phpgw_info']['user']['apps']['controller']))
                                        {
-                                               $address = 
isset($ticket['location_name']) ? 
$this->db->db_addslashes($ticket['location_name']) : '';
-                                               if($address)
-                                               {
-                                                       $value_set['address'] = 
$address;
-                                               }
+                                               $controller = 
CreateObject('controller.uicase');
+                                               
$controller->updateStatusForCases($location_id, $id, 1);
                                        }
-
-                                       if (isset($ticket['location_code']) && 
$ticket['location_code'])
-                                       {
-                                               $value_set['location_code'] = 
$ticket['location_code'];
-                                       }
-
-                                       $admin_location = 
CreateObject('helpdesk.soadmin_location');
-                                       $admin_location->read(false);
-
-                                       // Delete old values for location - in 
case of moving up in the hierarchy
-                                       $metadata = 
$this->db->metadata('phpgw_helpdesk_tickets');
-                                       for ($i = 1;$i < 
$admin_location->total_records + 1; $i++)
-                                       {
-                                               if(isset($metadata["loc{$i}"]))
-                                               {
-                                                       $value_set["loc{$i}"]   
= false;
-                                               }
-                                       }
-
-                                       if(isset($ticket['location']) && 
is_array($ticket['location']))
-                                       {
-                                               foreach ($ticket['location'] as 
$column => $value)
-                                               {
-                                                       $value_set[$column]     
= $value;
-                                               }
-                                       }
-
-                                       if(isset($ticket['extra']) && 
is_array($ticket['extra']))
-                                       {
-                                               foreach ($ticket['extra'] as 
$column => $value)
-                                               {
-                                                       $value_set[$column]     
= $value;
-                                               }
-                                       }
-
-                                       $value_set      = 
$this->db->validate_update($value_set);
-
-                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET $value_set WHERE id={$id}",__LINE__,__FILE__);
-
-                                       
$this->historylog->add('L',$id,$ticket['location_code'],$oldlocation_code);
-                                       $receipt['message'][]= array('msg' => 
lang('Location has been updated'));
+                                       // at request
+                                       
execMethod('property.sorequest.update_status_from_related', array(
+                                               'location_id' => $location_id,
+                                               'id' => $id,
+                                               'status' => 'closed')
+                                       );
                                }
-                               unset($interlink);
                        }
 
 
-                       if(isset($ticket['make_order']) && 
$ticket['make_order'])
+                       /*
+                         if ($old_billable_rate != $ticket['billable_rate'])
+                         {
+                         $this->fields_updated[] = 'billable_rate';
+                         $this->db->query("update phpgw_helpdesk_tickets set 
billable_rate='" . $ticket['billable_rate']
+                         . "' where id='$id'",__LINE__,__FILE__);
+                         
$this->historylog->add('B',$id,$ticket['billable_rate'],$old_billable_rate);
+                         }
+                        */
+                       if ($old_subject != $ticket['subject'])
                        {
-                               $order_id = 
execMethod('property.socommon.increment_id', 'helpdesk');
-                               if($order_id)
-                               {
-                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET order_id = {$order_id} WHERE 
id={$id}",__LINE__,__FILE__);
-                                       $this->db->query("INSERT INTO fm_orders 
(id, type) VALUES ({$order_id}, 'helpdesk')",__LINE__,__FILE__);
-                               }
+                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET subject='" . $ticket['subject']
+                                       . "' where id='$id'", __LINE__, 
__FILE__);
+                               $this->historylog->add('S', $id, 
$ticket['subject'], $old_subject);
+                               $receipt['message'][] = array('msg' => 
lang('Subject has been updated'));
                        }
 
-                       $value_set                                      = 
array();
-                       $value_set['vendor_id']         = $ticket['vendor_id'];
-                       $value_set['b_account_id']      = 
$ticket['b_account_id'];
-                       $value_set['order_descr']       = 
$this->db->db_addslashes($ticket['order_descr']);
-                       $value_set['ecodimb']           = $ticket['ecodimb'];
-                       $value_set['budget']            = $ticket['budget'];
-                       $value_set                                      = 
$this->db->validate_update($value_set);
-                       $this->db->query("UPDATE phpgw_helpdesk_tickets SET 
$value_set WHERE id={$id}",__LINE__,__FILE__);
+                       if ($ticket['billable_hours'])
+                       {
+                               $ticket['billable_hours'] = 
(float)str_replace(',', '.', $ticket['billable_hours']);
+                               $ticket['billable_hours'] += 
(float)$old_billable_hours;
+                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET billable_hours='{$ticket['billable_hours']}'"
+                                       . " WHERE id='{$id}'", __LINE__, 
__FILE__);
+                               $this->historylog->add('H', $id, 
$ticket['billable_hours'], $old_billable_hours);
+                               $receipt['message'][] = array('msg' => 
lang('billable hours has been updated'));
+                       }
 
-                       $this->db->transaction_commit();
 
-                       if (isset($this->fields_updated))
+                       $value_set = array();
+
+                       if (isset($ticket['extra']) && 
is_array($ticket['extra']) && $ticket['extra'])
                        {
-                               $receipt['message'][]= array('msg' => 
lang('Ticket has been updated'));
+                               foreach ($ticket['extra'] as $column => $value)
+                               {
+                                       $value_set[$column] = $value;
+                               }
 
-                               $criteria = array
-                                       (
-                                               'appname'       => 'helpdesk',
-                                               'location'      => 
$this->acl_location,
-                                               'allrows'       => true
-                                       );
+                               $value_set = 
$this->db->validate_update($value_set);
 
-                               $custom_functions = 
$GLOBALS['phpgw']->custom_functions->find($criteria);
+                               $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET $value_set WHERE id={$id}", __LINE__, __FILE__);
+                       }
 
-                               foreach ( $custom_functions as $entry )
-                               {
-                                       // prevent path traversal
-                                       if ( preg_match('/\.\./', 
$entry['file_name']) )
-                                       {
-                                               continue;
-                                       }
+                       $this->db->transaction_commit();
 
-                                       $file = PHPGW_SERVER_ROOT . 
"/helpdesk/inc/custom/{$GLOBALS['phpgw_info']['user']['domain']}/{$entry['file_name']}";
-                                       if ( $entry['active'] && is_file($file) 
)
-                                       {
-                                               require_once $file;
-                                       }
-                               }
+                       if (isset($this->fields_updated) && 
$this->fields_updated)
+                       {
+                               $receipt['message'][] = array('msg' => 
lang('Ticket has been updated'));
                        }
                        return $receipt;
                }
@@ -1109,7 +1062,7 @@
                                                'deadline'                      
=> ''
                                        );
 
-                               
execMethod('helpdesk.sopending_action.close_pending_action', $action_params);
+                               
execMethod('property.sopending_action.close_pending_action', $action_params);
                                unset($action_params);
                        }
                        if ($this->db->f('in_progress') )
@@ -1126,7 +1079,7 @@
                                                'deadline'                      
=> ''
                                        );
 
-                               
execMethod('helpdesk.sopending_action.close_pending_action', $action_params);
+                               
execMethod('property.sopending_action.close_pending_action', $action_params);
                                unset($action_params);
                        }
 
@@ -1152,7 +1105,7 @@
                        $this->db->query("DELETE FROM fm_action_pending WHERE 
location_id = {$location_id} AND item_id = {$id}",__LINE__,__FILE__);
                        $this->db->query("DELETE FROM phpgw_interlink WHERE 
location1_id = {$location_id} AND location1_item_id = {$id}",__LINE__,__FILE__);
                        $this->db->query("DELETE FROM phpgw_interlink WHERE 
location2_id = {$location_id} AND location2_item_id = {$id}",__LINE__,__FILE__);
-                       $this->db->query("DELETE FROM phpgw_helpdesk_history 
WHERE history_record_id = {$id}",__LINE__,__FILE__);
+                       $this->db->query("DELETE FROM phpgw_history_log WHERE 
history_record_id = {$id}",__LINE__,__FILE__);
                        $this->db->query("DELETE FROM phpgw_helpdesk_views 
WHERE id = {$id}",__LINE__,__FILE__);
                        $this->db->query("DELETE FROM phpgw_helpdesk_tickets 
WHERE id = {$id}",__LINE__,__FILE__);
 

Modified: branches/Version-2_0-branch/helpdesk/inc/class.uitts.inc.php
===================================================================
--- branches/Version-2_0-branch/helpdesk/inc/class.uitts.inc.php        
2016-08-30 10:38:55 UTC (rev 15541)
+++ branches/Version-2_0-branch/helpdesk/inc/class.uitts.inc.php        
2016-08-30 11:14:07 UTC (rev 15542)
@@ -45,9 +45,12 @@
                                'download'                      => true,
                                'view_file'                     => true,
                                'edit_status'           => true,
+                               'edit_priority' => true,
                                'get_vendor_email'      => true,
                                '_print'                        => true,
-                               'columns'                       => true
+                               'columns'                       => true,
+                               'update_data'           => true,
+                               'upload_clip'           => true
                        );
 
                /**
@@ -282,18 +285,6 @@
                        $name[] = 'entry_date';
                        $name[] = 'status';
 
-                       if( $this->acl->check('.ticket.order', PHPGW_ACL_READ, 
'helpdesk') )
-                       {
-                               $name[] = 'order_id';
-                               $name[] = 'vendor';
-                       }
-
-                       if( $this->acl->check('.ticket.order', PHPGW_ACL_ADD, 
'helpdesk') )
-                       {
-                               $name[] = 'estimate';
-                               $name[] = 'actual_cost';
-                       }
-
                        $uicols_related = $this->bo->uicols_related;
 
                        foreach($uicols_related as $related)
@@ -319,12 +310,14 @@
                                array_push($descr,$_name);                      
                        }
 
-                       $name[] = 'finnish_date';
-                       $name[] = 'delay';
+                       if($this->_show_finnish_date)
+                       {
+                               $name[] = 'finnish_date';
+                               $name[] = 'delay';
+                               array_push($descr,lang('finnish 
date'),lang('delay'));
+                       }
 
-                       array_push($descr,lang('finnish date'),lang('delay'));
 
-
                        $custom_cols = 
isset($GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['ticket_columns'])
 ? $GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['ticket_columns'] 
: array();
 
                        foreach ($custom_cols as $col)
@@ -355,6 +348,28 @@
                        return "id ".$id." ".lang('Status has been changed');
                }
 
+               function edit_priority()
+               {
+                       if (!$this->acl_edit)
+                       {
+                               return lang('sorry - insufficient rights');
+                       }
+
+                       $new_priority = phpgw::get_var('new_priority', 'int');
+                       $id = phpgw::get_var('id', 'int');
+
+//                     $ticket = $this->bo->read_single($id);
+
+                       $receipt = $this->bo->update_priority(array('priority' 
=> $new_priority), $id);
+                       if 
((isset($this->bo->config->config_data['mailnotification']) && 
$this->bo->config->config_data['mailnotification']) || 
(isset($GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['tts_notify_me'])
 && $GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['tts_notify_me'] 
== 1 && $this->bo->fields_updated
+                               )
+                       )
+                       {
+                               $receipt = $this->bo->mail_ticket($id, 
$this->bo->fields_updated, $receipt);
+                       }
+                       return "id {$id} " . lang('priority has been changed');
+               }
+
                function delete()
                {
                        if(!$this->acl_delete)
@@ -446,7 +461,7 @@
                        $uicols['name'][] = 'link_view';
                        $uicols['descr'][] = lang('link view');
                        $uicols['name'][] = 'lang_view_statustext';
-                       $uicols['descr'][] = lang('lang view statustext');
+                       $uicols['descr'][] = lang('view statustext');
                        $uicols['name'][] = 'text_view';
                        $uicols['descr'][] = lang('text view');
 
@@ -538,7 +553,7 @@
                                'list' => $values_combo_box[3]
                        );
 
-                       if(!$this->simple)
+                       if(!$this->_simple)
                        {
                                $values_combo_box[0] = 
$this->cats->formatted_xslt_list(array('format' => 'filter',
                                        'selected' => $this->cat_id, 'globals' 
=> true, 'use_acl' => $this->_category_acl));
@@ -736,119 +751,121 @@
                                'parameters' => json_encode($parameters)
                        );
 
-
-                       $jasper = execMethod('property.sojasper.read', 
array('location_id' => $GLOBALS['phpgw']->locations->get_id('helpdesk', 
$this->acl_location)));
-
-                       foreach ($jasper as $report)
+                       if(!$this->_simple)
                        {
-                               $data['datatable']['actions'][] = array
-                                       (
-                                       'my_name' => 'edit',
-                                       'text' => lang('open JasperReport %1 in 
new window', $report['title']),
-                                       'action' => 
$GLOBALS['phpgw']->link('/index.php', array
-                                               (
-                                               'menuaction' => 
'helpdesk.uijasper.view',
-                                               'jasper_id' => $report['id'],
-                                               'target' => '_blank'
-                                       )),
-                                       'parameters' => json_encode($parameters)
-                               );
-                       }
+                               $jasper = execMethod('property.sojasper.read', 
array('location_id' => $GLOBALS['phpgw']->locations->get_id('helpdesk', 
$this->acl_location)));
 
-                       if ($this->acl_delete)
-                       {
-                               $data['datatable']['actions'][] = array
-                                       (
-                                       'my_name' => 'delete',
-                                       'statustext' => lang('delete the 
ticket'),
-                                       'text' => lang('delete'),
-                                       'confirm_msg' => lang('do you really 
want to delete this ticket'),
-                                       'action' => 
$GLOBALS['phpgw']->link('/index.php', array
-                                               (
-                                               'menuaction' => 
'helpdesk.uitts.delete'
-                                       )),
-                                       'parameters' => json_encode($parameters)
-                               );
-                       }
-
-                       if 
(isset($GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['tts_status_link'])
 && 
$GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['tts_status_link'] == 
'yes' && $this->acl_edit)
-                       {
-                               $status['X'] = array
-                                       (
-                                       'status' => lang('closed'),
-                               );
-                               $status['O'] = array
-                                       (
-                                       'status' => 
isset($this->bo->config->config_data['tts_lang_open']) && 
$this->bo->config->config_data['tts_lang_open'] ? 
$this->bo->config->config_data['tts_lang_open'] : lang('Open'),
-                               );
-
-                               $custom_status = $this->bo->get_custom_status();
-
-                               foreach ($custom_status as $custom)
+                               foreach ($jasper as $report)
                                {
-                                       $status["C{$custom['id']}"] = array
-                                               (
-                                               'status' => $custom['name'],
-                                       );
-                               }
-
-                               foreach ($status as $status_code => 
$status_info)
-                               {
                                        $data['datatable']['actions'][] = array
                                                (
-                                               'my_name' => 'status',
-                                               'statustext' => 
$status_info['status'],
-                                               'text' => lang('change to') . ' 
status:  ' . $status_info['status'],
-                                               'confirm_msg' => lang('do you 
really want to change the status to %1', $status_info['status']),
+                                               'my_name' => 'edit',
+                                               'text' => lang('open 
JasperReport %1 in new window', $report['title']),
                                                'action' => 
$GLOBALS['phpgw']->link('/index.php', array
                                                        (
-                                                       'menuaction' => 
'helpdesk.uitts.edit_status',
-                                                       'edit_status' => true,
-                                                       'new_status' => 
$status_code,
-                                                       'second_display' => 
true,
-                                                       'sort' => $this->sort,
-                                                       'order' => $this->order,
-                                                       'cat_id' => 
$this->cat_id,
-                                                       'filter' => 
$this->filter,
-                                                       'user_filter' => 
$this->user_filter,
-                                                       'query' => $this->query,
-                                                       'district_id' => 
$this->district_id,
-                                                       'allrows' => 
$this->allrows,
-                                                       'delete' => 'dummy'// 
FIXME to trigger the json in property.js.
+                                                       'menuaction' => 
'helpdesk.uijasper.view',
+                                                       'jasper_id' => 
$report['id'],
+                                                       'target' => '_blank'
                                                )),
                                                'parameters' => 
json_encode($parameters)
                                        );
                                }
 
-                               $_priorities = $this->bo->get_priority_list();
-
-                               foreach ($_priorities as $_priority_info)
+                               if ($this->acl_delete)
                                {
                                        $data['datatable']['actions'][] = array
                                                (
-                                               'my_name' => 'priority',
-                                               'statustext' => 
$_priority_info['name'],
-                                               'text' => lang('change to') . ' 
' . lang('priority') . ':  ' . $_priority_info['name'],
-                                               'confirm_msg' => lang('do you 
really want to change the priority to %1', $_priority_info['name']),
+                                               'my_name' => 'delete',
+                                               'statustext' => lang('delete 
the ticket'),
+                                               'text' => lang('delete'),
+                                               'confirm_msg' => lang('do you 
really want to delete this ticket'),
                                                'action' => 
$GLOBALS['phpgw']->link('/index.php', array
                                                        (
-                                                       'menuaction' => 
'helpdesk.uitts.edit_priority',
-                                                       'edit_status' => true,
-                                                       'new_priority' => 
$_priority_info['id'],
-                                                       'second_display' => 
true,
-                                                       'sort' => $this->sort,
-                                                       'order' => $this->order,
-                                                       'cat_id' => 
$this->cat_id,
-                                                       'filter' => 
$this->filter,
-                                                       'user_filter' => 
$this->user_filter,
-                                                       'query' => $this->query,
-                                                       'district_id' => 
$this->district_id,
-                                                       'allrows' => 
$this->allrows,
-                                                       'delete' => 'dummy'// 
FIXME to trigger the json in property.js.
+                                                       'menuaction' => 
'helpdesk.uitts.delete'
                                                )),
                                                'parameters' => 
json_encode($parameters)
                                        );
                                }
+
+                               if 
(isset($GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['tts_status_link'])
 && 
$GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['tts_status_link'] == 
'yes' && $this->acl_edit)
+                               {
+                                       $status['X'] = array
+                                               (
+                                               'status' => lang('closed'),
+                                       );
+                                       $status['O'] = array
+                                               (
+                                               'status' => 
isset($this->bo->config->config_data['tts_lang_open']) && 
$this->bo->config->config_data['tts_lang_open'] ? 
$this->bo->config->config_data['tts_lang_open'] : lang('Open'),
+                                       );
+

@@ Diff output truncated at 153600 characters. @@



reply via email to

[Prev in Thread] Current Thread [Next in Thread]