fmsystem-commits
[Top][All Lists]
Advanced

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

[Fmsystem-commits] [16738] Syncromind: Merge 16588:16737 from trunk


From: sigurdne
Subject: [Fmsystem-commits] [16738] Syncromind: Merge 16588:16737 from trunk
Date: Sat, 13 May 2017 10:15:16 -0400 (EDT)

Revision: 16738
          http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=16738
Author:   sigurdne
Date:     2017-05-13 10:15:15 -0400 (Sat, 13 May 2017)
Log Message:
-----------
Syncromind: Merge 16588:16737 from trunk

Modified Paths:
--------------
    branches/dev-syncromind-2/activitycalendar/inc/class.soactivity.inc.php
    branches/dev-syncromind-2/admin/inc/class.uiaccounts.inc.php
    branches/dev-syncromind-2/booking/inc/class.bobooking.inc.php
    branches/dev-syncromind-2/booking/inc/class.socommon.inc.php
    
branches/dev-syncromind-2/booking/inc/class.socompleted_reservation_export.inc.php
    branches/dev-syncromind-2/booking/inc/class.uiallocation.inc.php
    branches/dev-syncromind-2/booking/templates/base/allocation_new.xsl
    branches/dev-syncromind-2/bookingfrontend/inc/custom/default/MinId.php
    branches/dev-syncromind-2/eventplanner/inc/class.socalendar.inc.php
    branches/dev-syncromind-2/eventplanner/inc/class.socustomer.inc.php
    branches/dev-syncromind-2/eventplanner/inc/class.sovendor.inc.php
    branches/dev-syncromind-2/eventplanner/inc/class.uiapplication.inc.php
    branches/dev-syncromind-2/eventplanner/inc/class.uibooking.inc.php
    branches/dev-syncromind-2/eventplanner/inc/class.uicustomer.inc.php
    branches/dev-syncromind-2/eventplanner/inc/class.uievents.inc.php
    branches/dev-syncromind-2/eventplanner/inc/class.uivendor.inc.php
    branches/dev-syncromind-2/eventplanner/inc/model/class.application.inc.php
    branches/dev-syncromind-2/eventplanner/inc/model/class.booking.inc.php
    branches/dev-syncromind-2/eventplanner/inc/model/class.customer.inc.php
    branches/dev-syncromind-2/eventplanner/inc/model/class.vendor.inc.php
    branches/dev-syncromind-2/eventplanner/js/portico/application.edit.js
    branches/dev-syncromind-2/eventplanner/setup/phpgw_no.lang
    branches/dev-syncromind-2/eventplanner/setup/setup.inc.php
    branches/dev-syncromind-2/eventplanner/setup/tables_current.inc.php
    branches/dev-syncromind-2/eventplanner/setup/tables_update.inc.php
    branches/dev-syncromind-2/eventplanner/templates/base/application.xsl
    branches/dev-syncromind-2/eventplanner/templates/base/application_info.xsl
    branches/dev-syncromind-2/eventplanner/templates/base/customer.xsl
    
branches/dev-syncromind-2/eventplannerfrontend/js/portico/application.edit.js
    
branches/dev-syncromind-2/eventplannerfrontend/templates/base/application.xsl
    
branches/dev-syncromind-2/eventplannerfrontend/templates/base/application_info.xsl
    branches/dev-syncromind-2/eventplannerfrontend/templates/base/customer.xsl
    branches/dev-syncromind-2/eventplannerfrontend/templates/base/events.xsl
    branches/dev-syncromind-2/eventplannerfrontend/templates/base/vendor.xsl
    branches/dev-syncromind-2/helpdesk/inc/class.boemail_out.inc.php
    branches/dev-syncromind-2/helpdesk/inc/class.botts.inc.php
    branches/dev-syncromind-2/helpdesk/inc/class.sogeneric.inc.php
    branches/dev-syncromind-2/helpdesk/inc/class.sotts.inc.php
    branches/dev-syncromind-2/helpdesk/inc/class.uitts.inc.php
    
branches/dev-syncromind-2/helpdesk/inc/custom/default/ticket_LRS_pre_commit_validate.php
    branches/dev-syncromind-2/helpdesk/inc/hook_config.inc.php
    branches/dev-syncromind-2/helpdesk/js/portico/tts.add.js
    branches/dev-syncromind-2/helpdesk/setup/phpgw_no.lang
    branches/dev-syncromind-2/helpdesk/setup/setup.inc.php
    branches/dev-syncromind-2/helpdesk/setup/tables_current.inc.php
    branches/dev-syncromind-2/helpdesk/setup/tables_update.inc.php
    branches/dev-syncromind-2/helpdesk/templates/base/config.tpl
    branches/dev-syncromind-2/helpdesk/templates/base/files.xsl
    branches/dev-syncromind-2/helpdesk/templates/base/tts.xsl
    branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_ldap.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_sql.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/auth/class.auth_customsso.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.acl.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.bocommon.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.db.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.db_adodb.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.db_pdo.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.jquery.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.login.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.sessions.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.socommon.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/class.uicommon_jquery.inc.php
    branches/dev-syncromind-2/phpgwapi/inc/pdf/extensions/CezTableImage.php
    branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpc.inc
    branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpc_wrappers.inc
    branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpcs.inc
    branches/dev-syncromind-2/phpgwapi/js/jquery/common.js
    branches/dev-syncromind-2/phpgwapi/templates/base/attributes_form.xsl
    branches/dev-syncromind-2/phpgwapi/templates/base/css/base.css
    branches/dev-syncromind-2/phpgwapi/templates/base/files.xsl
    branches/dev-syncromind-2/phpgwapi/templates/portico/css/base.css
    branches/dev-syncromind-2/phpgwapi/templates/portico/head.inc.php
    branches/dev-syncromind-2/phpgwapi/templates/pure/css/demo_mmenu.css
    branches/dev-syncromind-2/phpgwapi/templates/pure/head.inc.php
    branches/dev-syncromind-2/phpgwapi/templates/pure/js/mmenu.js
    branches/dev-syncromind-2/preferences/templates/base/index.tpl
    branches/dev-syncromind-2/property/inc/class.bogeneric.inc.php
    branches/dev-syncromind-2/property/inc/class.bolocation.inc.php
    branches/dev-syncromind-2/property/inc/class.botts.inc.php
    branches/dev-syncromind-2/property/inc/class.custom_fields.inc.php
    branches/dev-syncromind-2/property/inc/class.hook_helper.inc.php
    branches/dev-syncromind-2/property/inc/class.menu.inc.php
    branches/dev-syncromind-2/property/inc/class.soentity.inc.php
    branches/dev-syncromind-2/property/inc/class.sogeneric_.inc.php
    branches/dev-syncromind-2/property/inc/class.sopending_action.inc.php
    branches/dev-syncromind-2/property/inc/class.soproject.inc.php
    branches/dev-syncromind-2/property/inc/class.sotts.inc.php
    branches/dev-syncromind-2/property/inc/class.soworkorder.inc.php
    branches/dev-syncromind-2/property/inc/class.uidimb_role_user.inc.php
    branches/dev-syncromind-2/property/inc/class.uientity.inc.php
    branches/dev-syncromind-2/property/inc/class.uigeneric.inc.php
    branches/dev-syncromind-2/property/inc/class.uiproject.inc.php
    branches/dev-syncromind-2/property/inc/class.uitts.inc.php
    branches/dev-syncromind-2/property/inc/class.uiwo_hour.inc.php
    branches/dev-syncromind-2/property/inc/class.uiworkorder.inc.php
    
branches/dev-syncromind-2/property/inc/cron/default/Import_fra_agresso_X205_BK.php
    
branches/dev-syncromind-2/property/inc/custom/default/BkBygg_lag_Agresso_ordre_fra_melding.php
    
branches/dev-syncromind-2/property/inc/custom/default/BkBygg_lag_Agresso_ordre_fra_workorder.php
    branches/dev-syncromind-2/property/inc/hook_config.inc.php
    branches/dev-syncromind-2/property/js/portico/condition_survey.js
    branches/dev-syncromind-2/property/js/portico/custom.edit.js
    branches/dev-syncromind-2/property/js/portico/invoice.list_sub.js
    branches/dev-syncromind-2/property/js/portico/project.edit.js
    branches/dev-syncromind-2/property/js/portico/request.edit.js
    branches/dev-syncromind-2/property/js/portico/tenant_claim.edit.js
    branches/dev-syncromind-2/property/js/portico/tts.view.js
    branches/dev-syncromind-2/property/js/portico/wo_hour.deviation.js
    branches/dev-syncromind-2/property/js/portico/wo_hour.index.js
    branches/dev-syncromind-2/property/setup/phpgw_no.lang
    branches/dev-syncromind-2/property/setup/setup.inc.php
    branches/dev-syncromind-2/property/setup/tables_current.inc.php
    branches/dev-syncromind-2/property/setup/tables_update.inc.php
    branches/dev-syncromind-2/property/templates/base/attributes_view.xsl
    branches/dev-syncromind-2/property/templates/base/cat_select.xsl
    branches/dev-syncromind-2/property/templates/base/cat_sub_select.xsl
    branches/dev-syncromind-2/property/templates/base/config.tpl
    branches/dev-syncromind-2/property/templates/base/css/base.css
    branches/dev-syncromind-2/property/templates/base/dimb_role_user.xsl
    branches/dev-syncromind-2/property/templates/base/entity.xsl
    branches/dev-syncromind-2/property/templates/base/group_select.xsl
    branches/dev-syncromind-2/property/templates/base/location_form.xsl
    branches/dev-syncromind-2/property/templates/base/location_form2.xsl
    branches/dev-syncromind-2/property/templates/base/project.xsl
    branches/dev-syncromind-2/property/templates/base/status_select.xsl
    branches/dev-syncromind-2/property/templates/base/tts.xsl
    branches/dev-syncromind-2/property/templates/base/user_id_select.xsl
    branches/dev-syncromind-2/property/templates/base/workorder.xsl
    branches/dev-syncromind-2/rental/inc/class.soparty.inc.php
    branches/dev-syncromind-2/setup/templates/base/config.tpl
    branches/dev-syncromind-2/xmlrpc.php

Added Paths:
-----------
    branches/dev-syncromind-2/phpgwapi/js/jquery/js/jquery-3.2.1.min.js
    branches/dev-syncromind-2/property/inc/class.bosubstitute.inc.php
    branches/dev-syncromind-2/property/inc/class.sosubstitute.inc.php
    branches/dev-syncromind-2/property/inc/class.uisubstitute.inc.php
    branches/dev-syncromind-2/property/js/portico/substitute.index.js
    branches/dev-syncromind-2/property/templates/base/substitute.xsl

Property Changed:
----------------
    branches/dev-syncromind-2/
    branches/dev-syncromind-2/booking/
    branches/dev-syncromind-2/bookingfrontend/

Index: branches/dev-syncromind-2
===================================================================
--- branches/dev-syncromind-2   2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2   2017-05-13 14:15:15 UTC (rev 16738)

Property changes on: branches/dev-syncromind-2
___________________________________________________________________
Modified: svn:mergeinfo
## -1,3 +1,3 ##
 /branches/dev-syncromind:13653
 /branches/stavangerkommune:12743-12875,12986
-/trunk:14934-14935,15165-15215,15218-15220,15222-15304,15306-15337,15339,15341-15398,15400-15421,15423-15474,15476-15607,15609,15611,15613-15652,15654-15732,15734,15736-15746,15750-15770,15772-15775,15777-15795,15797-15798,15800-15812,15814-15838,15840,15842-15888,15890,15892-15997,15999-16097,16103-16128,16131-16187,16190-16299,16301-16393,16396-16586
\ No newline at end of property
+/trunk:14934-14935,15165-15215,15218-15220,15222-15304,15306-15337,15339,15341-15398,15400-15421,15423-15474,15476-15607,15609,15611,15613-15652,15654-15732,15734,15736-15746,15750-15770,15772-15775,15777-15795,15797-15798,15800-15812,15814-15838,15840,15842-15888,15890,15892-15997,15999-16097,16103-16128,16131-16187,16190-16299,16301-16393,16396-16586,16589-16737
\ No newline at end of property
Modified: 
branches/dev-syncromind-2/activitycalendar/inc/class.soactivity.inc.php
===================================================================
--- branches/dev-syncromind-2/activitycalendar/inc/class.soactivity.inc.php     
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/activitycalendar/inc/class.soactivity.inc.php     
2017-05-13 14:15:15 UTC (rev 16738)
@@ -777,7 +777,7 @@
                        $this->soap = $soap;
                        //fromdate -> innparam for uthenting av delta - 
timestamp
                        $whereclause_date = "";
-                       if ($parameters['fromdate'])
+                       if (isset($parameters['fromdate']) && 
$parameters['fromdate'])
                        {
                                $from_date = (int)$parameters['fromdate'];
                                $whereclause_date = "AND last_change_date > 
{$from_date}";

Modified: branches/dev-syncromind-2/admin/inc/class.uiaccounts.inc.php
===================================================================
--- branches/dev-syncromind-2/admin/inc/class.uiaccounts.inc.php        
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/admin/inc/class.uiaccounts.inc.php        
2017-05-13 14:15:15 UTC (rev 16738)
@@ -164,6 +164,15 @@
 
                                $valid_users = array_unique($valid_users);
 
+                               $my_membership = $accounts->membership();
+
+                               foreach ($my_membership as $group_id => $info)
+                               {
+                                       $members = $accounts->member($group_id);
+                                       $valid_users = 
array_merge($valid_users, array_keys($members));
+                               }
+                               $valid_users = array_unique($valid_users);
+
                                $account_list = 
$GLOBALS['phpgw']->accounts->get_list('accounts', -1,$dir, $order,  $query);
                                foreach($account_list as  $user)
                                {
@@ -291,6 +300,10 @@
                                $valid_users = array();
                                foreach($available_apps as $_app => $dummy)
                                {
+                                       if($_app == 'admin')
+                                       {
+                                               continue;
+                                       }
                                        
if($GLOBALS['phpgw']->acl->check('admin', phpgwapi_acl::ADD, $_app))
                                        {
                                                $valid_users    = 
array_merge($valid_users, $GLOBALS['phpgw']->acl->get_ids_for_location('run', 
phpgwapi_acl::READ, $_app));
@@ -299,10 +312,12 @@
 
                                $valid_users = array_unique($valid_users);
 
+                               $admin_groups   = 
$GLOBALS['phpgw']->acl->get_ids_for_location('run', phpgwapi_acl::READ, 
'admin');
+
                                $allusers = 
$GLOBALS['phpgw']->accounts->get_list('groups', -1,$this->sort, $this->order, 
$this->query);
                                foreach($allusers as  $user)
                                {
-                                       if(!in_array($user->id, $valid_users))
+                                       if(!in_array($user->id, $valid_users) 
|| in_array($user->id, $admin_groups))
                                        {
                                                unset($allusers[$user->id]);
                                        }
@@ -982,6 +997,15 @@
                                return array('error' => 'error');
                        }
 
+                       /**
+                        * Go away
+                        */
+                       $test_admins = 
$GLOBALS['phpgw']->acl->get_ids_for_location('run', phpgwapi_acl::READ, 
'admin');
+                       if(in_array($group_id, $test_admins) && 
!$GLOBALS['phpgw']->acl->check('run', phpgwapi_acl::READ, 'admin'))
+                       {
+                                       return array('error' => 'error');
+                       }
+
                        $acl = createObject('phpgwapi.acl', $group_id);
                        $is_admin_group = $acl->check('run', 
phpgwapi_acl::READ, 'admin');
                        $current_user = 
$GLOBALS['phpgw_info']['user']['account_id'];
@@ -998,6 +1022,7 @@
                                        
$GLOBALS['phpgw']->accounts->delete_account4group($user_id, $group_id);
                                        //Delete cached menu for members of 
group
                                        phpgwapi_cache::user_clear('phpgwapi', 
'menu', $user_id);
+                                       
$GLOBALS['phpgw']->acl->clear_user_cache($user_id);
                                }
                                return array('message' => 'OK');
                        }
@@ -1032,6 +1057,7 @@
                                        
$GLOBALS['phpgw']->accounts->delete_account4group($entry['account_id'], 
$group_id);
                                        //Delete cached menu for members of 
group
                                        phpgwapi_cache::user_clear('phpgwapi', 
'menu', $entry['account_id']);
+                                       
$GLOBALS['phpgw']->acl->clear_user_cache($entry['account_id']);
                                }
                                return array('message' => 'OK');
                        }
@@ -1049,6 +1075,15 @@
                                return array('error' => 'error');
                        }
 
+                       /**
+                        * Do not get to elevate to admin rights
+                        */
+                       $test_admins = 
$GLOBALS['phpgw']->acl->get_ids_for_location('run', phpgwapi_acl::READ, 
'admin');
+                       if(in_array($group_id, $test_admins) && 
!$GLOBALS['phpgw']->acl->check('run', phpgwapi_acl::READ, 'admin'))
+                       {
+                                       return array('error' => 'error');
+                       }
+
                        if($group_id && isset($_POST['account_user']))
                        {
                                foreach ($account_user as $user_id)
@@ -1056,6 +1091,7 @@
                                        
$GLOBALS['phpgw']->accounts->add_user2group($user_id, $group_id);
                                        //Delete cached menu for members of 
group
                                        phpgwapi_cache::user_clear('phpgwapi', 
'menu', $user_id);
+                                       
$GLOBALS['phpgw']->acl->clear_user_cache($user_id);
                                }
                                return array('message' => 'OK');
                        }

Index: branches/dev-syncromind-2/booking
===================================================================
--- branches/dev-syncromind-2/booking   2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/booking   2017-05-13 14:15:15 UTC (rev 16738)

Property changes on: branches/dev-syncromind-2/booking
___________________________________________________________________
Modified: svn:mergeinfo
## -1,2 +1,2 ##
 /branches/stavangerkommune/booking:9468-12740,12743-12875,12986
-/trunk/booking:14937-15027,15165-15215,15253-15304,15306-15337,15341-15398,15476-15607,15613-15652,15654-15732,15814-15838,15892-15997,15999-16097,16131-16187,16301-16393,16396-16586
\ No newline at end of property
+/trunk/booking:14937-15027,15165-15215,15253-15304,15306-15337,15341-15398,15476-15607,15613-15652,15654-15732,15814-15838,15892-15997,15999-16097,16131-16187,16301-16393,16396-16586,16589-16737
\ No newline at end of property
Modified: branches/dev-syncromind-2/booking/inc/class.bobooking.inc.php
===================================================================
--- branches/dev-syncromind-2/booking/inc/class.bobooking.inc.php       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/booking/inc/class.bobooking.inc.php       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -1128,7 +1128,11 @@
 //                                echo "A0: break ef <= bf && et >= bt\n\n";
                                                                break;
                                                        }
-                                                       elseif (($ef >= $bf) && 
($et > $bt))
+                                                       //elseif (($ef >= $bf) 
&& ($et > $bt))
+                                                       /**
+                                                        * Sigurd 20170425 - 
altered in an attempt to keep allocations from disappearing.
+                                                        */
+                                                       elseif (($ef >= $bf) && 
($et >= $bt))
                                                        {
 //                                echo "A1: (ef >= bf) && (et > bt)\n";
                                                                $tmp['from_'] = 
$bf;

Modified: branches/dev-syncromind-2/booking/inc/class.socommon.inc.php
===================================================================
--- branches/dev-syncromind-2/booking/inc/class.socommon.inc.php        
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/booking/inc/class.socommon.inc.php        
2017-05-13 14:15:15 UTC (rev 16738)
@@ -576,7 +576,10 @@
                                                        while 
($this->db->next_record())
                                                        {
                                                                $id = 
$this->_unmarshal($this->db->f($key, false), 'int');
-                                                               
$results[$id_map[$id]][$field] = array();
+                                                               
if(empty($results[$id_map[$id]][$field]))
+                                                               {
+                                                                       
$results[$id_map[$id]][$field] = array();
+                                                               }
                                                                $data = array();
                                                                foreach 
($params['manytomany']['column'] as $intOrCol => $paramsOrCol)
                                                                {
@@ -604,7 +607,7 @@
                                                        while 
($this->db->next_record())
                                                        {
                                                                $id = 
$this->_unmarshal($this->db->f($key, false), 'int');
-                                                               
if(!isset($results[$id_map[$id]][$field]))
+                                                               
if(empty($results[$id_map[$id]][$field]))
                                                                {
                                                                        
$results[$id_map[$id]][$field] = array();
                                                                }

Modified: 
branches/dev-syncromind-2/booking/inc/class.socompleted_reservation_export.inc.php
===================================================================
--- 
branches/dev-syncromind-2/booking/inc/class.socompleted_reservation_export.inc.php
  2017-05-13 04:35:18 UTC (rev 16737)
+++ 
branches/dev-syncromind-2/booking/inc/class.socompleted_reservation_export.inc.php
  2017-05-13 14:15:15 UTC (rev 16738)
@@ -992,7 +992,20 @@
                                        $log_cost = $reservation['cost'];
                                        $log_varelinjer_med_dato = 
$reservation['article_description'] . ' - ' . $reservation['description'];
 
-                                       $log[] = $reservation['id'] . ';' . 
$reservation['reservation_type'] . ';' . $log_order_id . ';' . 
$log_customer_name . ' - ' . $log_customer_nr . ';' . $log_varelinjer_med_dato 
. ';' . $log_buidling . ';' . $log_cost;
+                                       $line_field = array();
+
+                                       $line_field[] = 
"\"{$reservation['id']}\"";
+                                       $line_field[] = 
"\"{$reservation['reservation_type']}\"";
+                                       $line_field[] = "\"{$log_order_id}\"";
+                                       $line_field[] = 
"\"{$log_customer_name}\"";
+                                       $line_field[] = 
"\"{$log_customer_nr}\"";
+                                       $line_field[] = 
"\"{$log_varelinjer_med_dato}\"";
+                                       $line_field[] = "\"{$log_buidling}\"";
+                                       $line_field[] = "\"{$log_cost}\"";
+
+                                       $log[] = implode(';',  $line_field);
+
+//                                     $log[] = $reservation['id'] . ';' . 
$reservation['reservation_type'] . ';' . $log_order_id . ';' . 
$log_customer_name . ' - ' . $log_customer_nr . ';' . $log_varelinjer_med_dato 
. ';' . $log_buidling . ';' . $log_cost;
                                }
                                else
                                {
@@ -1108,7 +1121,7 @@
                                $file_format_linebreak = "\n";
                        }
 
-                       return array('data' => implode($file_format_linebreak, 
$output), 'data_log' => implode("\n", $log),
+                       return array('data' => implode($file_format_linebreak, 
$output), 'data_log' => implode(PHP_EOL, $log),
                                'info' => $export_info, 'header_count' => 
$header_count);
                }
 
@@ -1360,7 +1373,7 @@
                                $file_format_linebreak = "\n";
                        }
 
-                       return array('data' => implode($file_format_linebreak, 
$output), 'data_log' => implode("\n", $log),
+                       return array('data' => implode($file_format_linebreak, 
$output), 'data_log' => implode(PHP_EOL, $log),
                                'info' => $export_info, 'header_count' => 
$header_count);
                }
 

Modified: branches/dev-syncromind-2/booking/inc/class.uiallocation.inc.php
===================================================================
--- branches/dev-syncromind-2/booking/inc/class.uiallocation.inc.php    
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/booking/inc/class.uiallocation.inc.php    
2017-05-13 14:15:15 UTC (rev 16738)
@@ -436,8 +436,8 @@
                                }
                                else
                                {
-                                       $timeFrom = $dateTimeFromE[1];
-                                       $timeTo = $dateTimeToE[1];
+                                       $timeFrom = end($dateTimeFromE);
+                                       $timeTo = end($dateTimeToE);
                                }
 
                                array_set_default($allocation, 'resources', 
array(phpgw::get_var('resource', 'int')));

Modified: branches/dev-syncromind-2/booking/templates/base/allocation_new.xsl
===================================================================
--- branches/dev-syncromind-2/booking/templates/base/allocation_new.xsl 
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/booking/templates/base/allocation_new.xsl 
2017-05-13 14:15:15 UTC (rev 16738)
@@ -51,7 +51,7 @@
                                                </xsl:attribute>
                                        </input>
                                </div>
-                               <div class="pure-control-group">
+                               <!--div class="pure-control-group">
                                        <label for="field_weekday">
                                                <xsl:value-of 
select="php:function('lang', 'Weekday')" />
                                        </label>
@@ -99,7 +99,7 @@
                                                        <xsl:value-of 
select="php:function('lang', 'Sunday')" />
                                                </option>
                                        </select>
-                               </div>
+                               </div-->
                                <div class="pure-control-group">
                                        <label for="field_from">
                                                <xsl:value-of 
select="php:function('lang', 'From')" />

Index: branches/dev-syncromind-2/bookingfrontend
===================================================================
--- branches/dev-syncromind-2/bookingfrontend   2017-05-13 04:35:18 UTC (rev 
16737)
+++ branches/dev-syncromind-2/bookingfrontend   2017-05-13 14:15:15 UTC (rev 
16738)

Property changes on: branches/dev-syncromind-2/bookingfrontend
___________________________________________________________________
Modified: svn:mergeinfo
## -1,2 +1,2 ##
 /branches/stavangerkommune/bookingfrontend:9468-12740,12986
-/trunk/bookingfrontend:14937-15027,15253-15304,15306-15337,15476-15607,15613-15652,15814-15838,15892-15997,16131-16187,16190-16299,16301-16393,16396-16586
\ No newline at end of property
+/trunk/bookingfrontend:14937-15027,15253-15304,15306-15337,15476-15607,15613-15652,15814-15838,15892-15997,16131-16187,16190-16299,16301-16393,16396-16586,16589-16737
\ No newline at end of property
Modified: branches/dev-syncromind-2/bookingfrontend/inc/custom/default/MinId.php
===================================================================
--- branches/dev-syncromind-2/bookingfrontend/inc/custom/default/MinId.php      
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/bookingfrontend/inc/custom/default/MinId.php      
2017-05-13 14:15:15 UTC (rev 16738)
@@ -117,7 +117,12 @@
                        }
                        catch (Exception $e)
                        {
-                               $status = lang('unable_to_connect_to_database');
+                               $GLOBALS['phpgw']->log->error(array(
+                                       'text'  => 
'bookingfrontend_external_user::get_breg_orgs() : error when trying to connect. 
Error: %1',
+                                       'p1'    => $db->get_error_message(),
+                                       'line'  => __LINE__,
+                                       'file'  => __FILE__
+                               ));
                        }
 
                        $sql = "SELECT DISTINCT orgnr FROM breg.personcurrent 
WHERE fodselsnr ='{$fodselsnr}'";

Modified: branches/dev-syncromind-2/eventplanner/inc/class.socalendar.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/class.socalendar.inc.php 
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/class.socalendar.inc.php 
2017-05-13 14:15:15 UTC (rev 16738)
@@ -148,8 +148,13 @@
                                        break;
 
                                case 'delete':
-                                       $sql = "DELETE FROM 
eventplanner_calendar WHERE customer_id IS NULL";
-                                       $where = 'AND';
+                                       $this->db->transaction_begin();
+                                       $sql = "DELETE FROM 
eventplanner_calendar_comment WHERE calendar_id IN(". implode(',', $ids) . ')';
+                                       
$this->db->query($sql,__LINE__,__FILE__);
+
+                                       $sql = "DELETE FROM 
eventplanner_calendar WHERE id IN(". implode(',', $ids) . ')';
+                                       
$this->db->query($sql,__LINE__,__FILE__);
+                                       return  $this->db->transaction_commit();
                                        break;
 
                                case 'disconnect':

Modified: branches/dev-syncromind-2/eventplanner/inc/class.socustomer.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/class.socustomer.inc.php 
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/class.socustomer.inc.php 
2017-05-13 14:15:15 UTC (rev 16738)
@@ -58,6 +58,11 @@
                function get_acl_condition( )
                {
                        $acl_condition = parent::get_acl_condition();
+
+                       if($this->relaxe_acl)
+                       {
+                               return $acl_condition;
+                       }
                        
                        $sql = "SELECT object_id, permission FROM 
eventplanner_permission WHERE subject_id = {$this->account}";
                        $this->db->query($sql,__LINE__,__FILE__);

Modified: branches/dev-syncromind-2/eventplanner/inc/class.sovendor.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/class.sovendor.inc.php   
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/class.sovendor.inc.php   
2017-05-13 14:15:15 UTC (rev 16738)
@@ -115,4 +115,17 @@
                        return  $this->db->transaction_commit();
                }
 
+               function check_duplicate_organization($organization_number = 
false)
+               {
+                       if(!$organization_number)
+                       {
+                               return false;
+                       }
+
+                       $query = $this->db->db_addslashes($organization_number);
+                       $sql = "SELECT name FROM eventplanner_vendor WHERE 
organization_number = '{$query}'";
+                       $this->db->query($sql,__LINE__,__FILE__);
+                       $this->db->next_record();       
+                       return $this->db->f('name', true);
+               }
        }
\ No newline at end of file

Modified: branches/dev-syncromind-2/eventplanner/inc/class.uiapplication.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/class.uiapplication.inc.php      
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/class.uiapplication.inc.php      
2017-05-13 14:15:15 UTC (rev 16738)
@@ -127,7 +127,12 @@
                {
                        if (empty($this->permissions[PHPGW_ACL_READ]))
                        {
-                               phpgw::no_access();
+                               $message = '';
+                               if($this->currentapp == 'eventplannerfrontend')
+                               {
+                                       $message = lang('you need to log in to 
access this page.');
+                               }
+                               phpgw::no_access(false, $message);
                        }
 
                        if (phpgw::get_var('phpgw_return_as') == 'json')
@@ -153,6 +158,7 @@
                                                'phpgw_return_as' => 'json'
                                        )),
                                        'allrows' => true,
+                                       'sorted_by'     => array('key' => 
$this->currentapp == 'eventplanner' ? 6 : 3, 'dir' => 'asc'),
                                        'new_item' => 
self::link(array('menuaction' => "{$this->currentapp}.uiapplication.add")),
                                        'editor_action' => '',
                                        'field' => parent::_get_fields()
@@ -298,8 +304,8 @@
                        );
 
                        $dates_def = array(
-                               array('key' => 'id', 'label' => lang('id'), 
'sortable' => true, 'resizeable' => true,'formatter' => 
'JqueryPortico.formatLink'),
-                               array('key' => 'from_', 'label' => 
lang('From'), 'sortable' => false, 'resizeable' => true),
+                               array('key' => 'id', 'label' => lang('id'), 
'sortable' => false, 'resizeable' => true,'formatter' => 
'JqueryPortico.formatLink'),
+                               array('key' => 'from_', 'label' => 
lang('From'), 'sortable' => true, 'resizeable' => true),
                                array('key' => 'to_', 'label' => lang('To'), 
'sortable' => false, 'resizeable' => true),
                                array('key' => 'status', 'label' => 
lang('status'), 'sortable' => false, 'resizeable' => true),
                                array('key' => 'customer_name', 'label' => 
lang('who'), 'sortable' => true, 'resizeable' => true),
@@ -368,7 +374,8 @@
                                'data' => json_encode(array()),
                                'config' => array(
                                        array('disableFilter' => true),
-                                       array('disablePagination' => true)
+                                       array('disablePagination' => true),
+                                       array('order' => 
json_encode(array(1,'asc'))),
                                )
                        );
                        $GLOBALS['phpgw']->jqcal->add_listener('date_start');
@@ -418,7 +425,8 @@
                                        'select_name' => 'category_id',
                                        'selected'      => 
$application->category_id ? $application->category_id : $default_category,
                                        'use_acl' => $this->_category_acl,
-                                       'required' => true)),
+                                       'required' => true,
+                                       'class'=>'pure-input-1-2')),
                                'status_list' => array('options' => 
$this->get_status_options($application->status)),
                                'application_type_list' => 
$application_type_list,
                                'wardrobe_list' =>  array('options' => 
$wardrobe_list),
@@ -428,6 +436,7 @@
                        );
                        phpgwapi_jquery::formvalidator_generate(array('date', 
'security', 'file'));
                        phpgwapi_jquery::load_widget('autocomplete');
+                       self::rich_text_editor('summary');
                        self::add_javascript($this->currentapp, 'portico', 
'application.edit.js');
                        self::render_template_xsl(array('application', 
'datatable_inline'), array($mode => $data));
                }

Modified: branches/dev-syncromind-2/eventplanner/inc/class.uibooking.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/class.uibooking.inc.php  
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/class.uibooking.inc.php  
2017-05-13 14:15:15 UTC (rev 16738)
@@ -82,17 +82,17 @@
                                'form' => array(
                                        'toolbar' => array(
                                                'item' => array(
+//                                                     array(
+//                                                             'type' => 
'autocomplete',
+//                                                             'name' => 
'application',
+//                                                             'app' => 
$this->currentapp,
+//                                                             'ui' => 
'application',
+//                                                             'function' => 
'get_list',
+//                                                             'label_attr' => 
'title',
+//                                                             'text' => 
lang('application') . ':',
+//                                                             
'requestGenerator' => 'requestWithApplicationFilter'
+//                                                     ),
                                                        array(
-                                                               'type' => 
'autocomplete',
-                                                               'name' => 
'application',
-                                                               'app' => 
$this->currentapp,
-                                                               'ui' => 
'application',
-                                                               'function' => 
'get_list',
-                                                               'label_attr' => 
'title',
-                                                               'text' => 
lang('application') . ':',
-                                                               
'requestGenerator' => 'requestWithApplicationFilter'
-                                                       ),
-                                                       array(
                                                                'type' => 
'checkbox',
                                                                'name' => 
'filter_active',
                                                                'text' => 
lang('showall'),
@@ -160,7 +160,12 @@
                        $GLOBALS['phpgw_info']['flags']['app_header'] .= '::' . 
lang('edit');
                        if (empty($this->permissions[PHPGW_ACL_ADD]))
                        {
-                               phpgw::no_access();
+                               $message = '';
+                               if($this->currentapp == 'eventplannerfrontend')
+                               {
+                                       $message = lang('you need to log in to 
access this page.');
+                               }
+                               phpgw::no_access(false, $message);
                        }
 
                        if (!empty($values['object']))

Modified: branches/dev-syncromind-2/eventplanner/inc/class.uicustomer.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/class.uicustomer.inc.php 
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/class.uicustomer.inc.php 
2017-05-13 14:15:15 UTC (rev 16738)
@@ -85,7 +85,12 @@
                {
                        if (empty($this->permissions[PHPGW_ACL_READ]))
                        {
-                               phpgw::no_access();
+                               $message = '';
+                               if($this->currentapp == 'eventplannerfrontend')
+                               {
+                                       $message = lang('you need to log in to 
access this page.');
+                               }
+                               phpgw::no_access(false, $message);
                        }
 
                        if (phpgw::get_var('phpgw_return_as') == 'json')
@@ -252,6 +257,8 @@
                                )
                        );
 
+                       $config = CreateObject('phpgwapi.config', 
'eventplanner')->read();
+                       $booking_interval = !empty($config['booking_interval']) 
? $config['booking_interval'] : null;
                        $data = array(
                                'datatable_def' => $datatable_def,
                                'form_action' => self::link(array('menuaction' 
=> "{$this->currentapp}.uicustomer.save")),
@@ -258,6 +265,7 @@
                                'cancel_url' => self::link(array('menuaction' 
=> "{$this->currentapp}.uicustomer.index",)),
                                'customer' => $customer,
                                'category_list' => array('options' => 
$this->get_category_options( $customer->category_id )),
+                               'booking_interval' => $booking_interval,
                                'mode' => $mode,
                                'tabs' => 
phpgwapi_jquery::tabview_generate($tabs, $active_tab),
                                'value_active_tab' => $active_tab

Modified: branches/dev-syncromind-2/eventplanner/inc/class.uievents.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/class.uievents.inc.php   
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/class.uievents.inc.php   
2017-05-13 14:15:15 UTC (rev 16738)
@@ -141,6 +141,7 @@
                                                'phpgw_return_as' => 'json'
                                        )),
                                        'allrows' => true,
+                                       'sorted_by'     => array('key' => 3, 
'dir' => 'asc'),
                                        'editor_action' => '',
                                        'field' => parent::_get_fields()
                                )
@@ -244,8 +245,6 @@
                        }
 
                        $category = 
$this->cats->return_single($application->category_id);
-                       $config = CreateObject('phpgwapi.config', 
'eventplanner')->read();
-                       $booking_interval = !empty($config['booking_interval']) 
? $config['booking_interval'] : null;
 
                        $data = array(
                                'datatable_def' => $datatable_def,
@@ -252,7 +251,6 @@
                                'cancel_url' => self::link(array('menuaction' 
=> "{$this->currentapp}.uievents.index",)),
                                'application' => $application,
                                'category_name' => $category[0]['name'],
-                               'booking_interval' => $booking_interval,
                                'status_list' => array('options' => 
$this->get_status_options($application->status)),
                                'application_type_list' => 
$application_type_list,
                                'tabs' => 
phpgwapi_jquery::tabview_generate($tabs, $active_tab),

Modified: branches/dev-syncromind-2/eventplanner/inc/class.uivendor.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/class.uivendor.inc.php   
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/class.uivendor.inc.php   
2017-05-13 14:15:15 UTC (rev 16738)
@@ -86,7 +86,12 @@
                {
                        if (empty($this->permissions[PHPGW_ACL_READ]))
                        {
-                               phpgw::no_access();
+                               $message = '';
+                               if($this->currentapp == 'eventplannerfrontend')
+                               {
+                                       $message = lang('you need to log in to 
access this page.');
+                               }
+                               phpgw::no_access(false, $message);
                        }
 
                        if (phpgw::get_var('phpgw_return_as') == 'json')

Modified: 
branches/dev-syncromind-2/eventplanner/inc/model/class.application.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/model/class.application.inc.php  
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/model/class.application.inc.php  
2017-05-13 14:15:15 UTC (rev 16738)
@@ -62,6 +62,7 @@
                        $audience_limit,
                        $title,
                        $description,
+                       $summary,
                        $remark,
                        $contact_name,
                        $contact_email,
@@ -130,6 +131,7 @@
                                        'label' => 'id',
                                        'sortable'=> true,
                                        'formatter' => 
'JqueryPortico.formatLink',
+                                       'public' => true,
                                        ),
                                'display_in_dashboard' => array('action'=> 
PHPGW_ACL_ADD | PHPGW_ACL_EDIT,
                                        'type' => 'bool'),
@@ -171,12 +173,19 @@
                                        'label' => 'title',
                                        'sortable' => false,
                                        'query' => true,
+                                       'public' => true,
                                        ),
                                'description' => array('action'=> PHPGW_ACL_ADD 
| PHPGW_ACL_EDIT,
                                        'type' => 'string',
                                        'label' => 'application description',
                                        'sortable' => false,
+                                       'required' => true,
                                        ),
+                               'summary' => array('action'=> PHPGW_ACL_ADD | 
PHPGW_ACL_EDIT,
+                                       'type' => 'html',
+                                       'label' => 'summary',
+                                       'sortable' => false,
+                                       ),
                                'remark' => array('action'=> PHPGW_ACL_ADD | 
PHPGW_ACL_EDIT,
                                        'type' => 'string',
                                        'label' => 'description',
@@ -226,7 +235,9 @@
                                        ),
                                'types' => array(
                                        'action'=> PHPGW_ACL_ADD | 
PHPGW_ACL_EDIT,
-                                       'type' => 'int', 'required' => true,
+                                       'type' => 'int',
+                                       'label' => 'program type',
+                                       'required' => true,
                                        'manytomany' => array(
                                                'table' => 
'eventplanner_application_type_relation',
                                                'key' => 'application_id',
@@ -236,6 +247,7 @@
                                'date_start' => array('action'=> PHPGW_ACL_READ 
| PHPGW_ACL_ADD | PHPGW_ACL_EDIT,
                                        'type' => 'date',
                                        'label' => 'date start',
+                                       'sortable' => true,
                                        'history' => true
                                        ),
                                'date_end' => array('action'=> PHPGW_ACL_READ | 
PHPGW_ACL_ADD | PHPGW_ACL_EDIT,

Modified: branches/dev-syncromind-2/eventplanner/inc/model/class.booking.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/model/class.booking.inc.php      
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/model/class.booking.inc.php      
2017-05-13 14:15:15 UTC (rev 16738)
@@ -108,7 +108,7 @@
                                ),
                                'from_' => array('action' => PHPGW_ACL_READ,
                                        'type' => 'string',
-                                       'query' => true,
+                                       'query' => false,
                                        'label' => 'from',
                                        'public' => true,
                                        'join' => array(
@@ -120,7 +120,7 @@
                                ),
                                'to_' => array('action' => PHPGW_ACL_READ,
                                        'type' => 'string',
-                                       'query' => true,
+                                       'query' => false,
                                        'label' => 'to',
                                        'public' => true,
                                        'join' => array(
@@ -132,7 +132,7 @@
                                ),
                                'active' => array('action' => PHPGW_ACL_READ,
                                        'type' => 'string',
-                                       'query' => true,
+                                       'query' => false,
                                        'label' => 'active',
                                        'public' => true,
                                        'join' => array(

Modified: 
branches/dev-syncromind-2/eventplanner/inc/model/class.customer.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/model/class.customer.inc.php     
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/model/class.customer.inc.php     
2017-05-13 14:15:15 UTC (rev 16738)
@@ -106,6 +106,7 @@
                                        'label' => 'id',
                                        'sortable'=> true,
                                        'formatter' => 
'JqueryPortico.formatLink',
+                                       'public'        => true
                                        ),
                                'owner_id' => array('action'=> PHPGW_ACL_ADD,
                                        'type' => 'int',
@@ -135,6 +136,7 @@
                                        'label' => 'name',
                                        'required' => true,
                                        'query' => true,
+                                       'public'        => true
                                        ),
                                'address_1' => array('action'=> PHPGW_ACL_ADD | 
PHPGW_ACL_EDIT,
                                        'type' => 'string',

Modified: branches/dev-syncromind-2/eventplanner/inc/model/class.vendor.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/inc/model/class.vendor.inc.php       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/inc/model/class.vendor.inc.php       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -264,6 +264,16 @@
                        }
                }
 
+               protected function doValidate( $entity, &$errors )
+               {
+                       $organization_number = $entity->organization_number;
+                       $duplicate_name = 
eventplanner_sovendor::get_instance()->check_duplicate_organization($organization_number);
+                       if ($duplicate_name)
+                       {
+                               $errors['organization_number'] = 
lang('organization number already exists for %1', $duplicate_name);
+                       }
+               }
+
                protected function generate_secret( $length = 10 )
                {
                        return substr(base64_encode(rand(1000000000, 
9999999999)), 0, $length);

Modified: branches/dev-syncromind-2/eventplanner/js/portico/application.edit.js
===================================================================
--- branches/dev-syncromind-2/eventplanner/js/portico/application.edit.js       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/js/portico/application.edit.js       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -66,7 +66,7 @@
                return;
        }
        var id = $("#application_id").val();
-
+       document.getElementById('summary').value = 
CKEDITOR.instances['summary'].getData();
        if (id > 0)
        {
                document.form.submit();
@@ -438,3 +438,34 @@
                        );
        }
 };
+
+       $.formUtils.addValidator({
+               name: 'application_types',
+               validatorFunction: function (value, $el, config, language, 
$form)
+               {
+                       var n = 0;
+                       $('#application_tbody_types input').each(function ()
+                       {
+                               if($(this).prop("checked"))
+                               {
+                                       n++;
+                               }
+                       });
+                       var v = (n > 0) ? true : false;
+
+                       if(v === false)
+                       {
+                               
$('#application_tbody_types').css("background-color", "#f2dede");
+                               $('#application_tbody_types').css("border", 
"#b94a48 1px solid");
+                       }
+                       else
+                       {
+                               
$('#application_tbody_types').css("background-color", "white");
+                               $('#application_tbody_types').css("border", 
"black");
+                       }
+
+                       return v;
+               },
+               errorMessage: 'Type is required',
+               errorMessageKey: 'application_types'
+       });

Modified: branches/dev-syncromind-2/eventplanner/setup/phpgw_no.lang
===================================================================
--- branches/dev-syncromind-2/eventplanner/setup/phpgw_no.lang  2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/setup/phpgw_no.lang  2017-05-13 
14:15:15 UTC (rev 16738)
@@ -119,4 +119,9 @@
 Time is already booked eventplanner    no      Tiden er allerede booking
 booking interval       eventplanner    no      Booking intervall
 days   eventplanner    no      dager
-there is a minimum interval of %1 hours        eventplanner    no      Det er 
et minimumsintervall på %1 time(r)
\ No newline at end of file
+hours  eventplanner    no      Timer
+there is a minimum interval of %1 hours        eventplanner    no      Det er 
et minimumsintervall på %1 time(r)
+summary        eventplanner    no      kortversjon programbeskrivelse
+organization number already exists for %1      eventplanner    no      
Organisasjonsnummeret er allerede registrert på %1.
+you need to log in to access this page.        eventplanner    no      Du må 
logge deg på for å få tilgang til denne siden.
+do you represent the owner of this entry?      eventplanner    no      
Representerer du eieren av denne posten?
\ No newline at end of file

Modified: branches/dev-syncromind-2/eventplanner/setup/setup.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/setup/setup.inc.php  2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/setup/setup.inc.php  2017-05-13 
14:15:15 UTC (rev 16738)
@@ -11,7 +11,7 @@
         * @version $Id: setup.inc.php 14728 2016-02-11 22:28:46Z sigurdne $
         */
        $setup_info['eventplanner']['name'] = 'eventplanner';
-       $setup_info['eventplanner']['version'] = '0.9.18.008';
+       $setup_info['eventplanner']['version'] = '0.9.18.009';
        $setup_info['eventplanner']['app_order'] = 20;
        $setup_info['eventplanner']['enable'] = 1;
        $setup_info['eventplanner']['app_group'] = 'office';

Modified: branches/dev-syncromind-2/eventplanner/setup/tables_current.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/setup/tables_current.inc.php 
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/setup/tables_current.inc.php 
2017-05-13 14:15:15 UTC (rev 16738)
@@ -148,6 +148,7 @@
                                'other_participants' => array('type' => 'text', 
'nullable' => True),
                                'title' => array('type' => 'text', 'nullable' 
=> False),
                                'description' => array('type' => 'text', 
'nullable' => False),
+                               'summary' => array('type' => 'text', 'nullable' 
=> true),
                                'remark' => array('type' => 'text', 'nullable' 
=> True),
                                'contact_name' => array('type' => 'text', 
'nullable' => False),
                                'contact_email' => array('type' => 'text', 
'nullable' => False),

Modified: branches/dev-syncromind-2/eventplanner/setup/tables_update.inc.php
===================================================================
--- branches/dev-syncromind-2/eventplanner/setup/tables_update.inc.php  
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/setup/tables_update.inc.php  
2017-05-13 14:15:15 UTC (rev 16738)
@@ -355,3 +355,20 @@
                }
                return $GLOBALS['setup_info']['eventplanner']['currentver'];
        }
+
+       $test[] = '0.9.18.008';
+       function eventplanner_upgrade0_9_18_008()
+       {
+               $GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
+
+               
$GLOBALS['phpgw_setup']->oProc->AddColumn('eventplanner_application', 
'summary', array(
+                       'type' => 'text',
+                       'nullable' => true
+               ));
+
+               if($GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit())
+               {
+                       $GLOBALS['setup_info']['eventplanner']['currentver'] = 
'0.9.18.009';
+               }
+               return $GLOBALS['setup_info']['eventplanner']['currentver'];
+       }

Modified: branches/dev-syncromind-2/eventplanner/templates/base/application.xsl
===================================================================
--- branches/dev-syncromind-2/eventplanner/templates/base/application.xsl       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/templates/base/application.xsl       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -129,7 +129,7 @@
                                                                                
<xsl:value-of select="$lang_vendor"/>
                                                                        
</xsl:attribute>
                                                                </input>
-                                                               <input 
type="text" id="vendor_name" name="vendor_name" 
value="{application/vendor_name}">
+                                                               <input 
type="text" id="vendor_name" name="vendor_name" 
value="{application/vendor_name}" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="placeholder">
                                                                                
<xsl:value-of select="$lang_vendor"/>
                                                                        
</xsl:attribute>
@@ -149,7 +149,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'contact name')"/>
                                                                </label>
-                                                               <input 
type="text" id="contact_name" name="contact_name" 
value="{application/contact_name}">
+                                                               <input 
type="text" id="contact_name" name="contact_name" 
value="{application/contact_name}" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="data-validation">
                                                                                
<xsl:text>required</xsl:text>
                                                                        
</xsl:attribute>
@@ -165,7 +165,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'contact email')"/>
                                                                </label>
-                                                               <input 
type="text" id="contact_email" name="contact_email" 
value="{application/contact_email}">
+                                                               <input 
type="text" id="contact_email" name="contact_email" 
value="{application/contact_email}" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="data-validation">
                                                                                
<xsl:text>required</xsl:text>
                                                                        
</xsl:attribute>
@@ -182,7 +182,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'contact phone')"/>
                                                                </label>
-                                                               <input 
type="text" id="contact_phone" name="contact_phone" 
value="{application/contact_phone}">
+                                                               <input 
type="text" id="contact_phone" name="contact_phone" 
value="{application/contact_phone}" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="data-validation">
                                                                                
<xsl:text>required</xsl:text>
                                                                        
</xsl:attribute>
@@ -198,7 +198,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'other participants')"/>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="other_participants">
+                                                               <textarea 
cols="47" rows="7" name="other_participants" class="pure-input-1-2" >
                                                                        
<xsl:value-of select="application/other_participants"/>
                                                                </textarea>
                                                        </div>
@@ -211,7 +211,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'program title')"/>
                                                                </label>
-                                                               <input 
type="text" id="title" name="title" value="{application/title}">
+                                                               <input 
type="text" id="title" name="title" value="{application/title}" 
class="pure-input-1-2" >
                                                                        
<xsl:attribute name="data-validation">
                                                                                
<xsl:text>required</xsl:text>
                                                                        
</xsl:attribute>
@@ -227,7 +227,13 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'program description')"/>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="description">
+                                                               <textarea 
cols="47" rows="7" name="description" class="pure-input-1-2" >
+                                                                       
<xsl:attribute name="data-validation">
+                                                                               
<xsl:text>required</xsl:text>
+                                                                       
</xsl:attribute>
+                                                                       
<xsl:attribute name="data-validation-error-msg">
+                                                                               
<xsl:value-of select="php:function('lang', 'program description')"/>
+                                                                       
</xsl:attribute>
                                                                        
<xsl:attribute name="title">
                                                                                
<xsl:value-of select="php:function('lang', 'might be published')"/>
                                                                        
</xsl:attribute>
@@ -250,7 +256,7 @@
                                                                                
                </th>
                                                                                
        </tr>
                                                                                
</thead>
-                                                                               
<tbody>
+                                                                               
<tbody id="application_tbody_types">
                                                                                
        <xsl:for-each select="application_type_list">
                                                                                
                <tr>
                                                                                
                        <td>
@@ -268,7 +274,11 @@
                                                                                
</tbody>
                                                                        </table>
                                                                </div>
-
+                                                               <input 
type="text" data-validation="application_types" size="1" style="visibility: 
hidden;">
+                                                                       
<xsl:attribute name="data-validation-error-msg">
+                                                                               
<xsl:value-of select="php:function('lang', 'program type')"/>
+                                                                       
</xsl:attribute>
+                                                               </input>
                                                        </div>
 
                                                        <div 
class="pure-control-group">
@@ -377,7 +387,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'remark')"/>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="remark">
+                                                               <textarea 
cols="47" rows="7" name="remark" class="pure-input-1-2" >
                                                                        
<xsl:value-of select="application/remark"/>
                                                                </textarea>
                                                        </div>
@@ -392,6 +402,12 @@
                                                                        
<xsl:value-of select="php:function('lang', 'case officer')"/>
                                                                </label>
                                                                <select 
id="case_officer_id" name="case_officer_id">
+                                                                       
<xsl:attribute name="data-validation">
+                                                                               
<xsl:text>required</xsl:text>
+                                                                       
</xsl:attribute>
+                                                                       
<xsl:attribute name="data-validation-error-msg">
+                                                                               
<xsl:value-of select="php:function('lang', 'case officer')"/>
+                                                                       
</xsl:attribute>
                                                                        
<xsl:apply-templates select="list_case_officer/options"/>
                                                                </select>
                                                        </div>
@@ -438,9 +454,17 @@
                                                        </div>
                                                        <div 
class="pure-control-group">
                                                                <label>
+                                                                       
<xsl:value-of select="php:function('lang', 'summary')"/>
+                                                               </label>
+                                                               <textarea 
cols="47" rows="7" id="summary" name="summary" class="pure-input-1-2" >
+                                                                       
<xsl:value-of disable-output-escaping="yes" select="application/summary"/>
+                                                               </textarea>
+                                                       </div>
+                                                       <div 
class="pure-control-group">
+                                                               <label>
                                                                        
<xsl:value-of select="php:function('lang', 'comment')"/>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="comment">
+                                                               <textarea 
cols="47" rows="7" name="comment" class="pure-input-1-2" >
                                                                        
<xsl:value-of select="application/comment"/>
                                                                </textarea>
                                                        </div>
@@ -504,7 +528,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'stage requirement')"/>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="stage_requirement">
+                                                               <textarea 
cols="47" rows="7" name="stage_requirement" class="pure-input-1-2" >
                                                                        
<xsl:value-of select="application/stage_requirement"/>
                                                                </textarea>
                                                        </div>
@@ -683,7 +707,7 @@
                                                        <div 
class="pure-control-group">
                                                                <label>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="raider">
+                                                               <textarea 
cols="47" rows="7" name="raider" class="pure-input-1-2" >
                                                                        
<xsl:value-of select="application/raider"/>
                                                                </textarea>
                                                        </div>

Modified: 
branches/dev-syncromind-2/eventplanner/templates/base/application_info.xsl
===================================================================
--- branches/dev-syncromind-2/eventplanner/templates/base/application_info.xsl  
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/templates/base/application_info.xsl  
2017-05-13 14:15:15 UTC (rev 16738)
@@ -18,6 +18,14 @@
 
        <div class="pure-control-group">
                <label>
+                       <xsl:value-of select="php:function('lang', 'program 
description')"/>
+               </label>
+               <div class="pure-custom">
+                       <xsl:value-of disable-output-escaping="yes" 
select="application/summary"/>
+               </div>
+       </div>
+       <div class="pure-control-group">
+               <label>
                        <xsl:value-of select="php:function('lang', 'remark')"/>
                </label>
                <xsl:value-of select="application/remark"/>

Modified: branches/dev-syncromind-2/eventplanner/templates/base/customer.xsl
===================================================================
--- branches/dev-syncromind-2/eventplanner/templates/base/customer.xsl  
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplanner/templates/base/customer.xsl  
2017-05-13 14:15:15 UTC (rev 16738)
@@ -350,6 +350,17 @@
                                </div>
                                <div id="booking">
                                        <fieldset>
+                                               <xsl:if test="booking_interval 
!= ''">
+                                                       <div 
class="pure-control-group">
+                                                               <label>
+                                                                       
<xsl:value-of select="php:function('lang', 'booking interval')"/>
+                                                               </label>
+                                                               <xsl:value-of 
select="booking_interval"/>
+                                                               <xsl:text> 
</xsl:text>
+                                                               <xsl:value-of 
select="php:function('lang', 'hours')"/>
+                                                       </div>
+                                               </xsl:if>
+
                                                <div class="pure-control-group">
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'booking')"/>

Modified: 
branches/dev-syncromind-2/eventplannerfrontend/js/portico/application.edit.js
===================================================================
--- 
branches/dev-syncromind-2/eventplannerfrontend/js/portico/application.edit.js   
    2017-05-13 04:35:18 UTC (rev 16737)
+++ 
branches/dev-syncromind-2/eventplannerfrontend/js/portico/application.edit.js   
    2017-05-13 14:15:15 UTC (rev 16738)
@@ -66,6 +66,7 @@
                return;
        }
        var id = $("#application_id").val();
+       document.getElementById('summary').value = 
CKEDITOR.instances['summary'].getData();
 
        if (id > 0)
        {

Modified: 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/application.xsl
===================================================================
--- 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/application.xsl   
    2017-05-13 04:35:18 UTC (rev 16737)
+++ 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/application.xsl   
    2017-05-13 14:15:15 UTC (rev 16738)
@@ -129,7 +129,7 @@
                                                                                
<xsl:value-of select="$lang_vendor"/>
                                                                        
</xsl:attribute>
                                                                </input>
-                                                               <input 
type="text" id="vendor_name" name="vendor_name" 
value="{application/vendor_name}">
+                                                               <input 
type="text" id="vendor_name" name="vendor_name" 
value="{application/vendor_name}" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="placeholder">
                                                                                
<xsl:value-of select="$lang_vendor"/>
                                                                        
</xsl:attribute>
@@ -150,7 +150,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'contact name')"/>
                                                                </label>
-                                                               <input 
type="text" id="contact_name" name="contact_name" 
value="{application/contact_name}">
+                                                               <input 
type="text" id="contact_name" name="contact_name" 
value="{application/contact_name}" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="data-validation">
                                                                                
<xsl:text>required</xsl:text>
                                                                        
</xsl:attribute>
@@ -166,7 +166,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'contact email')"/>
                                                                </label>
-                                                               <input 
type="text" id="contact_email" name="contact_email" 
value="{application/contact_email}">
+                                                               <input 
type="text" id="contact_email" name="contact_email" 
value="{application/contact_email}" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="data-validation">
                                                                                
<xsl:text>required</xsl:text>
                                                                        
</xsl:attribute>
@@ -183,7 +183,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'contact phone')"/>
                                                                </label>
-                                                               <input 
type="text" id="contact_phone" name="contact_phone" 
value="{application/contact_phone}">
+                                                               <input 
type="text" id="contact_phone" name="contact_phone" 
value="{application/contact_phone}" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="data-validation">
                                                                                
<xsl:text>required</xsl:text>
                                                                        
</xsl:attribute>
@@ -199,7 +199,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'other participants')"/>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="other_participants">
+                                                               <textarea 
cols="47" rows="7" name="other_participants" class="pure-input-1-2" >
                                                                        
<xsl:value-of select="application/other_participants"/>
                                                                </textarea>
                                                        </div>
@@ -212,7 +212,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'program title')"/>
                                                                </label>
-                                                               <input 
type="text" id="title" name="title" value="{application/title}">
+                                                               <input 
type="text" id="title" name="title" value="{application/title}" 
class="pure-input-1-2" >
                                                                        
<xsl:attribute name="data-validation">
                                                                                
<xsl:text>required</xsl:text>
                                                                        
</xsl:attribute>
@@ -228,7 +228,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'program description')"/>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="description">
+                                                               <textarea 
cols="47" rows="7" name="description" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="title">
                                                                                
<xsl:value-of select="php:function('lang', 'might be published')"/>
                                                                        
</xsl:attribute>
@@ -376,9 +376,17 @@
 
                                                        <div 
class="pure-control-group">
                                                                <label>
+                                                                       
<xsl:value-of select="php:function('lang', 'summary')"/>
+                                                               </label>
+                                                               <textarea 
cols="47" rows="7"  id="summary"  name="summary" class="pure-input-1-2" >
+                                                                       
<xsl:value-of disable-output-escaping="yes" select="application/summary"/>
+                                                               </textarea>
+                                                       </div>
+                                                       <div 
class="pure-control-group">
+                                                               <label>
                                                                        
<xsl:value-of select="php:function('lang', 'remark')"/>
                                                                </label>
-                                                               <textarea 
cols="47" rows="7" name="remark">
+                                                               <textarea 
cols="47" rows="7" name="remark" class="pure-input-1-2" >
                                                                        
<xsl:value-of select="application/remark"/>
                                                                </textarea>
                                                        </div>

Modified: 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/application_info.xsl
===================================================================
--- 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/application_info.xsl
  2017-05-13 04:35:18 UTC (rev 16737)
+++ 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/application_info.xsl
  2017-05-13 14:15:15 UTC (rev 16738)
@@ -15,6 +15,14 @@
                </label>
                <xsl:value-of select="application/title"/>
        </div>
+       <div class="pure-control-group">
+               <label>
+                       <xsl:value-of select="php:function('lang', 'program 
description')"/>
+               </label>
+               <div class="pure-custom">
+                       <xsl:value-of disable-output-escaping="yes" 
select="application/summary"/>
+               </div>
+       </div>
 
        <div class="pure-control-group">
                <label>

Modified: 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/customer.xsl
===================================================================
--- branches/dev-syncromind-2/eventplannerfrontend/templates/base/customer.xsl  
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplannerfrontend/templates/base/customer.xsl  
2017-05-13 14:15:15 UTC (rev 16738)
@@ -50,7 +50,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="$lang_category"/>
                                                        </label>
-                                                       <select 
name="category_id">
+                                                       <select 
name="category_id" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="title">
                                                                        
<xsl:value-of select="$lang_category"/>
                                                                </xsl:attribute>
@@ -67,7 +67,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'name')"/>
                                                        </label>
-                                                       <input type="text" 
name="name" value="{customer/name}">
+                                                       <input type="text" 
name="name" value="{customer/name}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -88,7 +88,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'address')"/>
                                                        </label>
-                                                       <input type="text" 
name="address_1" value="{customer/address_1}">
+                                                       <input type="text" 
name="address_1" value="{customer/address_1}" class="pure-input-1-4" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -97,7 +97,7 @@
                                                                </xsl:attribute>
 
                                                        </input>
-                                                       <input type="text" 
name="address_2" value="{customer/address_2}">
+                                                       <input type="text" 
name="address_2" value="{customer/address_2}" class="pure-input-1-4" >
                                                                <xsl:attribute 
name="placeholder">
                                                                        
<xsl:value-of select="$lang_address_2"/>
                                                                </xsl:attribute>
@@ -107,7 +107,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'zip code')"/>
                                                        </label>
-                                                       <input type="text" 
name="zip_code" value="{customer/zip_code}">
+                                                       <input type="text" 
name="zip_code" value="{customer/zip_code}" class="pure-input-1-4" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -115,7 +115,7 @@
                                                                        
<xsl:value-of select="php:function('lang', 'zip code')"/>
                                                                </xsl:attribute>
                                                        </input>
-                                                       <input type="text" 
name="city" value="{customer/city}">
+                                                       <input type="text" 
name="city" value="{customer/city}" class="pure-input-1-4" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -128,7 +128,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'organization number')"/>
                                                        </label>
-                                                       <input type="text" 
id="organization_number" name="organization_number" 
value="{customer/organization_number}">
+                                                       <input type="text" 
id="organization_number" name="organization_number" 
value="{customer/organization_number}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>organization_number</xsl:text>
                                                                </xsl:attribute>
@@ -144,7 +144,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'account number')"/>
                                                        </label>
-                                                       <input type="text" 
id="account_number" name="account_number" value="{customer/account_number}">
+                                                       <input type="text" 
id="account_number" name="account_number" value="{customer/account_number}" 
class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>account_number</xsl:text>
                                                                </xsl:attribute>
@@ -160,7 +160,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'number of users')"/>
                                                        </label>
-                                                       <input type="text" 
name="number_of_users" value="{customer/number_of_users}">
+                                                       <input type="text" 
name="number_of_users" value="{customer/number_of_users}" 
class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>number</xsl:text>
                                                                </xsl:attribute>
@@ -173,7 +173,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'contact name')"/>
                                                        </label>
-                                                       <input type="text" 
name="contact_name" value="{customer/contact_name}">
+                                                       <input type="text" 
name="contact_name" value="{customer/contact_name}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -186,7 +186,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'email')"/>
                                                        </label>
-                                                       <input type="text" 
name="contact_email" id="contact_email" value="{customer/contact_email}">
+                                                       <input type="text" 
name="contact_email" id="contact_email" value="{customer/contact_email}" 
class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>email</xsl:text>
                                                                </xsl:attribute>
@@ -199,7 +199,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'contact phone')"/>
                                                        </label>
-                                                       <input type="text" 
name="contact_phone" value="{customer/contact_phone}">
+                                                       <input type="text" 
name="contact_phone" value="{customer/contact_phone}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -213,7 +213,7 @@
                                                                <xsl:value-of 
select="php:function('lang', 'contact name')"/>
                                                                <xsl:text> 
2</xsl:text>
                                                        </label>
-                                                       <input type="text" 
name="contact2_name" id="contact2_name" value="{customer/contact2_name}">
+                                                       <input type="text" 
name="contact2_name" id="contact2_name" value="{customer/contact2_name}" 
class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation-optional">
                                                                        
<xsl:text>true</xsl:text>
                                                                </xsl:attribute>
@@ -227,7 +227,7 @@
                                                                <xsl:value-of 
select="php:function('lang', 'email')"/>
                                                                <xsl:text> 
2</xsl:text>
                                                        </label>
-                                                       <input type="text" 
name="contact2_email" id="contact2_email" value="{customer/contact2_email}">
+                                                       <input type="text" 
name="contact2_email" id="contact2_email" value="{customer/contact2_email}" 
class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>email</xsl:text>
                                                                </xsl:attribute>
@@ -244,7 +244,7 @@
                                                                <xsl:value-of 
select="php:function('lang', 'contact phone')"/>
                                                                <xsl:text> 
2</xsl:text>
                                                        </label>
-                                                       <input type="text" 
name="contact2_phone" id="contact2_phone" value="{customer/contact2_phone}">
+                                                       <input type="text" 
name="contact2_phone" id="contact2_phone" value="{customer/contact2_phone}" 
class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation-depends-on">
                                                                        
<xsl:text>contact2_name</xsl:text>
                                                                </xsl:attribute>
@@ -260,7 +260,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'description')"/>
                                                        </label>
-                                                       <textarea cols="47" 
rows="7" name="description">
+                                                       <textarea cols="47" 
rows="7" name="description" class="pure-input-1-2" >
                                                                <xsl:value-of 
select="customer/description"/>
                                                        </textarea>
                                                </div>
@@ -268,7 +268,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'remark')"/>
                                                        </label>
-                                                       <textarea cols="47" 
rows="7" name="remark">
+                                                       <textarea cols="47" 
rows="7" name="remark" class="pure-input-1-2" >
                                                                <xsl:value-of 
select="customer/remark"/>
                                                        </textarea>
                                                </div>
@@ -276,6 +276,16 @@
                                </div>
                                <div id="booking">
                                        <fieldset>
+                                               <xsl:if test="booking_interval 
!= ''">
+                                                       <div 
class="pure-control-group">
+                                                               <label>
+                                                                       
<xsl:value-of select="php:function('lang', 'booking interval')"/>
+                                                               </label>
+                                                               <xsl:value-of 
select="booking_interval"/>
+                                                               <xsl:text> 
</xsl:text>
+                                                               <xsl:value-of 
select="php:function('lang', 'hours')"/>
+                                                       </div>
+                                               </xsl:if>
                                                <div class="pure-control-group">
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'booking')"/>

Modified: 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/events.xsl
===================================================================
--- branches/dev-syncromind-2/eventplannerfrontend/templates/base/events.xsl    
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplannerfrontend/templates/base/events.xsl    
2017-05-13 14:15:15 UTC (rev 16738)
@@ -65,17 +65,6 @@
                                                </label>
                                                <xsl:value-of 
select="category_name"/>
                                        </div>
-
-                                       <xsl:if test="booking_interval != ''">
-                                               <div class="pure-control-group">
-                                                       <label>
-                                                               <xsl:value-of 
select="php:function('lang', 'booking interval')"/>
-                                                       </label>
-                                                       <xsl:value-of 
select="booking_interval"/>
-                                                       <xsl:text> </xsl:text>
-                                                       <xsl:value-of 
select="php:function('lang', 'days')"/>
-                                               </div>
-                                       </xsl:if>
                                        
                                        <div class="pure-control-group">
                                                <label>

Modified: 
branches/dev-syncromind-2/eventplannerfrontend/templates/base/vendor.xsl
===================================================================
--- branches/dev-syncromind-2/eventplannerfrontend/templates/base/vendor.xsl    
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/eventplannerfrontend/templates/base/vendor.xsl    
2017-05-13 14:15:15 UTC (rev 16738)
@@ -50,7 +50,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="$lang_category"/>
                                                        </label>
-                                                       <select 
name="category_id">
+                                                       <select 
name="category_id" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="title">
                                                                        
<xsl:value-of select="$lang_category"/>
                                                                </xsl:attribute>
@@ -67,7 +67,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'name')"/>
                                                        </label>
-                                                       <input type="text" 
name="name" value="{vendor/name}">
+                                                       <input type="text" 
name="name" value="{vendor/name}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -88,7 +88,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'address')"/>
                                                        </label>
-                                                       <input type="text" 
name="address_1" value="{vendor/address_1}">
+                                                       <input type="text" 
name="address_1" value="{vendor/address_1}" class="pure-input-1-4" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -97,7 +97,7 @@
                                                                </xsl:attribute>
 
                                                        </input>
-                                                       <input type="text" 
name="address_2" value="{vendor/address_2}">
+                                                       <input type="text" 
name="address_2" value="{vendor/address_2}" class="pure-input-1-4" >
                                                                <xsl:attribute 
name="placeholder">
                                                                        
<xsl:value-of select="$lang_address_2"/>
                                                                </xsl:attribute>
@@ -107,7 +107,8 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'zip code')"/>
                                                        </label>
-                                                       <input type="text" 
name="zip_code" value="{vendor/zip_code}">
+                                                       
+                                                       <input type="text" 
name="zip_code" value="{vendor/zip_code}" class="pure-input-1-4" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -115,7 +116,7 @@
                                                                        
<xsl:value-of select="php:function('lang', 'zip code')"/>
                                                                </xsl:attribute>
                                                        </input>
-                                                       <input type="text" 
name="city" value="{vendor/city}">
+                                                       <input type="text" 
name="city" value="{vendor/city}" class="pure-input-1-4" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -128,7 +129,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'organization number')"/>
                                                        </label>
-                                                       <input type="text" 
id="organization_number" name="organization_number" 
value="{vendor/organization_number}">
+                                                       <input type="text" 
id="organization_number" name="organization_number" 
value="{vendor/organization_number}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>organization_number</xsl:text>
                                                                </xsl:attribute>
@@ -141,7 +142,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'contact name')"/>
                                                        </label>
-                                                       <input type="text" 
name="contact_name" value="{vendor/contact_name}">
+                                                       <input type="text" 
name="contact_name" value="{vendor/contact_name}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -154,7 +155,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'email')"/>
                                                        </label>
-                                                       <input type="text" 
name="contact_email" id="contact_email" value="{vendor/contact_email}">
+                                                       <input type="text" 
name="contact_email" id="contact_email" value="{vendor/contact_email}" 
class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>email</xsl:text>
                                                                </xsl:attribute>
@@ -167,7 +168,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'contact phone')"/>
                                                        </label>
-                                                       <input type="text" 
name="contact_phone" value="{vendor/contact_phone}">
+                                                       <input type="text" 
name="contact_phone" value="{vendor/contact_phone}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -180,7 +181,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'account number')"/>
                                                        </label>
-                                                       <input type="text" 
name="account_number" value="{vendor/account_number}">
+                                                       <input type="text" 
name="account_number" value="{vendor/account_number}" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>account_number</xsl:text>
                                                                </xsl:attribute>
@@ -193,7 +194,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'vendor description')"/>
                                                        </label>
-                                                       <textarea cols="47" 
rows="7" name="description">
+                                                       <textarea cols="47" 
rows="7" name="description" class="pure-input-1-2" >
                                                                <xsl:attribute 
name="data-validation">
                                                                        
<xsl:text>required</xsl:text>
                                                                </xsl:attribute>
@@ -204,7 +205,7 @@
                                                        <label>
                                                                <xsl:value-of 
select="php:function('lang', 'remark')"/>
                                                        </label>
-                                                       <textarea cols="47" 
rows="7" name="remark">
+                                                       <textarea cols="47" 
rows="7" name="remark" class="pure-input-1-2" >
                                                                <xsl:value-of 
select="vendor/remark"/>
                                                        </textarea>
                                                </div>

Modified: branches/dev-syncromind-2/helpdesk/inc/class.boemail_out.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/inc/class.boemail_out.inc.php    
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/inc/class.boemail_out.inc.php    
2017-05-13 14:15:15 UTC (rev 16738)
@@ -138,7 +138,7 @@
                        $cc ='';
                        $bcc = '';
                        $from_email = $config['from_email'];
-                       $from_name = '';
+                       $from_name = $config['from_email'];
                        foreach ($ids as $recipient_id)
                        {
                                $recipient = $sogeneric->read_single(array('id' 
=> $recipient_id));

Modified: branches/dev-syncromind-2/helpdesk/inc/class.botts.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/inc/class.botts.inc.php  2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/inc/class.botts.inc.php  2017-05-13 
14:15:15 UTC (rev 16738)
@@ -545,7 +545,7 @@
                function read_additional_notes($id)
                {
                        $additional_notes = array();
-                       $history_array = 
$this->historylog->return_array(array(),array('C'),'','',$id);
+                       $history_array = 
$this->historylog->return_array(array(),array('C'),'history_timestamp','ASC',$id);
 
                        $i=2;
                        foreach ($history_array as $value)
@@ -773,23 +773,19 @@
                        $log_recipients = array();
                        $this->send                     = 
CreateObject('phpgwapi.send');
 
-                       $ticket = $this->so->read_single($id);
+                       $ticket = $this->read_single($id);
 
-                       $address_element = 
$this->get_address_element($ticket['location_code']);
-
-                       $history_values = 
$this->historylog->return_array(array(),array('O'),'history_timestamp','DESC',$id);
-                       $entry_date = 
$GLOBALS['phpgw']->common->show_date($history_values[0]['datetime'],$this->dateformat);
-
                        if($ticket['status']=='X')
                        {
                                $history_values = 
$this->historylog->return_array(array(),array('X'),'history_timestamp','DESC',$id);
-                               $timestampclosed = 
$GLOBALS['phpgw']->common->show_date($history_values[0]['datetime'],$this->dateformat);
+                               $timestampclosed = 
$GLOBALS['phpgw']->common->show_date($history_values[0]['datetime']);
                        }
 
-                       $history_2 = 
$this->historylog->return_array(array('C','O'),array(),'','',$id);
-                       $m=count($history_2)-1;
-                       $ticket['status']=$history_2[$m]['status'];
+                       $history_values = 
$this->historylog->return_array(array(),array('O'),'history_timestamp','DESC',$id);
+                       $entry_date = 
$GLOBALS['phpgw']->common->show_date($history_values[0]['datetime']);
 
+                       $status_text = $this->get_status_text();
+
                        $group_name= 
$GLOBALS['phpgw']->accounts->id2name($ticket['group_id']);
 
                        // build subject
@@ -813,75 +809,129 @@
 
                        //-----------from--------
                        // build body
-                       $body  = '';
-                       $body .= '<a href ="http://' . 
$GLOBALS['phpgw_info']['server']['hostname'] . 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'helpdesk.uitts.view', 'id' => $id)).'">' . lang('Ticket').' #' .$id 
.'</a>'."\n";
-                       $body .= lang('Date Opened').': '.$entry_date."\n";
-                       $body .= lang('Category').': '. 
$this->get_category_name($ticket['cat_id']) ."\n";
-//                     $body .= lang('Subject').': '. $ticket['subject'] ."\n";
-                       $body .= lang('Location').': '. 
$ticket['location_code'] ."\n";
-                       $body .= lang('Address').': '. $ticket['address'] ."\n";
-                       if (isset($address_element) AND 
is_array($address_element))
+                       $request_scheme = empty($_SERVER['HTTPS']) || 
$_SERVER['HTTPS'] == 'off' ? 'http' : 'https';
+
+                       if($request_scheme == 'https')
                        {
-                               foreach($address_element as $address_entry)
-                               {
-                                       $body .= $address_entry['text'].': '. 
$address_entry['value'] ."\n";
-                               }
+                               $GLOBALS['phpgw_info']['server']['enforce_ssl'] 
= true;
                        }
+                       $body = '<a href ="' . 
$GLOBALS['phpgw']->link('/index.php', array('menuaction' => 
'helpdesk.uitts.view',
+                                       'id' => $id), false, true) . '">' . 
lang('Ticket') . ' #' . $id . '</a>' . "\n";
 
-                       if($ticket['tenant_id'])
+                       $body .= "<table>";
+                       $body .= '<tr><td>'. lang('Date 
Opened').'</td><td>:&nbsp;'.$entry_date."</td></tr>";
+                       $body .= '<tr><td>'. 
lang('status').'</td><td>:&nbsp;'.$status_text[$ticket['status']]."</td></tr>";
+                       $body .= '<tr><td>'. 
lang('Category').'</td><td>:&nbsp;'. 
$this->get_category_name($ticket['cat_id']) ."</td></tr>";
+
+                       $body .= '<tr><td>'. lang('Assigned 
To').'</td><td>:&nbsp;'.$GLOBALS['phpgw']->accounts->id2name($ticket['assignedto'])."</td></tr>";
+                       
if(empty($this->config->config_data['disable_priority']))
                        {
-                               
$tenant_data=$this->bocommon->read_single_tenant($ticket['tenant_id']);
-                               $body .= lang('Tenant').': '. 
$tenant_data['first_name'] . ' ' .$tenant_data['last_name'] ."\n";
+                               $body .= '<tr><td>'. 
lang('Priority').'</td><td>:&nbsp;'.$ticket['priority']."</td></tr>";
+                       }
 
-                               if($tenant_data['contact_phone'])
-                               {
-                                       $body .= lang('Contact phone').': '. 
$tenant_data['contact_phone'] ."\n";
+                       
if(empty($this->config->config_data['tts_disable_groupassign_on_add']))
+                       {
+                               $body .= '<tr><td>'. 
lang('Group').'</td><td>:&nbsp;'. $group_name ."</td></tr>";
+                       }
 
-                               }
+                       if($ticket['reverse_id'])
+                       {
+                               $user_name = $ticket['reverse_name'];
+                               $body .= '<tr><td>'. lang('Owned 
By').'</td><td>:&nbsp;'. $ticket['user_name'] ."</td></tr>";
                        }
-                       $body .= lang('Assigned To').': 
'.$GLOBALS['phpgw']->accounts->id2name($ticket['assignedto'])."\n";
-                       $body .= lang('Priority').': '.$ticket['priority']."\n";
-                       if($group_name)
+                       else
                        {
-                               $body .= lang('Group').': '. $group_name ."\n";
+                               $user_name = $ticket['user_name'];
                        }
-                       $body .= lang('Opened By').': '. $ticket['user_name'] 
."\n\n";
-                       $body .= lang('First Note Added').":\n";
-                       $body .= 
stripslashes(strip_tags($ticket['details']))."\n\n";
 
-                       
/**************************************************************\
-                        * Display additional notes                             
        *
-                        
\**************************************************************/
-                       if($fields_updated)
+                       $body .= '<tr><td>'. lang('Opened 
By').'</td><td>:&nbsp;'. $user_name ."</td></tr>";
+
+                       if($timestampclosed)
                        {
-                               $i=1;
+                               $body .= '<tr><td>'. lang('Date 
Closed').'</td><td>:&nbsp;'.$timestampclosed."</td></tr>";
+                       }
 
-                               $history_array = 
$this->historylog->return_array(array(),array('C'),'','',$id);
+                       if(!empty($ticket['attributes']))
+                       {
+                               $custom         = 
createObject('property.custom_fields');
+                               $location_id = 
$GLOBALS['phpgw']->locations->get_id('helpdesk', '.ticket');
 
-                               foreach($history_array as $value)
+                               foreach ($ticket['attributes'] as $attribute)
                                {
-                                       $body .= lang('Date') . ': 
'.$GLOBALS['phpgw']->common->show_date($value['datetime'])."\n";
-                                       $body .= lang('User') . ': 
'.$value['owner']."\n";
-                                       $body .=lang('Note').': '. 
nl2br(stripslashes($value['new_value']))."\n\n";
-                                       $i++;
+                                       $custom_value = 
$custom->get_translated_value(array(
+                                                               'value' => 
$attribute['value'],
+                                                               'attrib_id' => 
$attribute['id'],
+                                                               'datatype' => 
$attribute['datatype'],
+                                                               
'get_single_function' => $attribute['get_single_function'],
+                                                               
'get_single_function_input' => $attribute['get_single_function_input']
+                                                               ),
+                                                               $location_id);
+                                       $body .= '<tr><td>'. 
$attribute['input_text'].'</td><td>:&nbsp;'.$custom_value."</td></tr>";
                                }
-                               $subject.= "-" .$i;
                        }
-                       
/**************************************************************\
-                        * Display record history                               
        *
-                        
\**************************************************************/
 
-                       if($timestampclosed)
+                       $body .= '</table>';
+
+
+                       if($get_message)
                        {
-                               $body .= lang('Date Closed').': 
'.$timestampclosed."\n\n";
+                               $i = 1;
+                               $lang_date = lang('date');
+                               $lang_user = lang('user');
+                               $lang_note = lang('note');
+                               $table_content = <<<HTML
+                               <thead>
+                                       <tr>
+                                               <th>
+                                                       #
+                                               </th>
+                                               <th>
+                                                       {$lang_date}
+                                               </th>
+                                               <th>
+                                                       {$lang_user}
+                                               </th>
+                                               <th>
+                                                       {$lang_note}
+                                               </th>
+                                       </tr>
+                               </thead>
+HTML;
+
+                               $table_content .= 
"<tr><td>{$i}</td><td>{$entry_date}</td><td>{$user_name}</td><td>{$ticket['details']}</td></tr>";
+
+
+                               $additional_notes = 
$this->read_additional_notes($id);
+
+                               foreach ($additional_notes as $value)
+                               {
+                                       $table_content .= 
"<tr><td>{$value['value_count']}</td><td>{$value['value_date']}</td><td>{$value['value_user']}</td><td>{$value['value_note']}</td></tr>";
+                               }
+                               $body.= "<table border='1' class='pure-table 
pure-table-bordered pure-table-striped'>{$table_content}</table>";
+                               $subject .= "::{$i}";
                        }
 
-
                        if($get_message)
                        {
                                return array('subject' => $subject, 'body' => 
$body);
                        }
+                       $css = file_get_contents(PHPGW_SERVER_ROOT . 
"/phpgwapi/templates/pure/css/pure-min.css");
 
+                       $html = <<<HTML
+<!DOCTYPE HTML>
+<html>
+       <head>
+               <meta charset="utf-8">
+               <style TYPE="text/css">
+                       <!--{$css}-->
+               </style>
+       </head>
+       <body>
+               {$body}
+       </body>
+</html>
+HTML;
+
                        $members = array();
 
                        if( 
isset($this->config->config_data['groupnotification']) && 
$this->config->config_data['groupnotification']==1 && $ticket['group_id'] )
@@ -899,7 +949,8 @@
                        if( 
(isset($GLOBALS['phpgw']->preferences->data['helpdesk']['tts_notify_me'])
                                        && 
($GLOBALS['phpgw']->preferences->data['helpdesk']['tts_notify_me'] == 1)
                                )
-                               || 
($this->config->config_data['ownernotification'] && $ticket['user_id']))
+                               || 
($this->config->config_data['ownernotification'] && $ticket['user_id'])
+                               || $ticket['reverse_id'])
                        {
                                // add owner to recipients
                                $members[$ticket['user_id']] = 
$GLOBALS['phpgw']->accounts->id2name($ticket['user_id']);
@@ -926,8 +977,17 @@
                        foreach($members as $account_id => $account_name)
                        {
                                $prefs = 
$this->bocommon->create_preferences('helpdesk',$account_id);
-                               if(!isset($prefs['tts_notify_me'])      || 
$prefs['tts_notify_me'] == 1)
+                               if(!isset($prefs['tts_notify_me'])      || 
$prefs['tts_notify_me'] == 1 || $ticket['reverse_id'])
                                {
+                                       /**
+                                        * Calculate email from username
+                                        */
+                                       if(!$prefs['email'])
+                                       {
+                                               $email_domain = 
!empty($GLOBALS['phpgw_info']['server']['email_domain']) ? 
$GLOBALS['phpgw_info']['server']['email_domain'] : 'bergen.kommune.no';
+                                               $account_lid = 
$GLOBALS['phpgw']->accounts->get($account_id)->lid;
+                                               $prefs['email'] = 
"address@hidden";
+                                       }
                                        if 
($validator->check_email_address($prefs['email']))
                                        {
                                                // Email address is technically 
valid
@@ -1003,13 +1063,12 @@
                        if($toarray)
                        {
                                $to = implode(';',$toarray);
-                               $body = nl2br($body);
 
                                if 
(isset($GLOBALS['phpgw_info']['server']['smtp_server']) && 
$GLOBALS['phpgw_info']['server']['smtp_server'])
                                {
                                        try
                                        {
-                                               $rc = $this->send->msg('email', 
$to, $subject, stripslashes($body), '', $cc, 
$bcc,$current_user_address,$GLOBALS['phpgw_info']['user']['fullname'],'html');
+                                               $rc = $this->send->msg('email', 
$to, $subject, $html, '', $cc, 
$bcc,$current_user_address,$GLOBALS['phpgw_info']['user']['fullname'],'html');
                                        }
                                        catch (phpmailerException $e)
                                        {

Modified: branches/dev-syncromind-2/helpdesk/inc/class.sogeneric.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/inc/class.sogeneric.inc.php      
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/inc/class.sogeneric.inc.php      
2017-05-13 14:15:15 UTC (rev 16738)
@@ -239,7 +239,7 @@
                                                        'created' => 
array('add' => 'time()'),
                                                        'modified' => 
array('edit' => 'time()'),
                                                ),
-                                               'check_grant' => true
+       //                                      'check_grant' => true
                                        );
 
                                        break;
@@ -302,7 +302,7 @@
                                                        'created' => 
array('add' => 'time()'),
                                                        'modified' => 
array('edit' => 'time()'),
                                                ),
-                                               'check_grant' => true
+               //                              'check_grant' => true
                                        );
 
                                        break;

Modified: branches/dev-syncromind-2/helpdesk/inc/class.sotts.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/inc/class.sotts.inc.php  2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/inc/class.sotts.inc.php  2017-05-13 
14:15:15 UTC (rev 16738)
@@ -114,9 +114,10 @@
                        $sort                   = isset($data['sort']) && 
$data['sort'] ? $data['sort']:'DESC';
                        $order                  = 
isset($data['order'])?$data['order']:'';
                        $cat_id                 = isset($data['cat_id']) && 
$data['cat_id'] ? $data['cat_id']:0;
-                       $allrows                = 
isset($data['allrows'])?$data['allrows']:'';
                        $start_date             = isset($data['start_date']) && 
$data['start_date'] ? (int)$data['start_date'] : 0;
                        $end_date               = isset($data['end_date']) && 
$data['end_date'] ? (int)$data['end_date'] : 0;
+                       $results                = isset($data['results']) && 
$data['results'] ? (int)$data['results'] : 0;
+                       $allrows                = $results == -1 ? true : false;
                        $dry_run                = isset($data['dry_run']) ? 
$data['dry_run'] : '';
                        $new                    = isset($data['new']) ? 
$data['new'] : '';
                        $location_code  = isset($data['location_code']) ? 
$data['location_code'] : '';
@@ -265,7 +266,7 @@
                                {
                                        if($value)
                                        {
-                                               $filtermethod .= "{$or} 
phpgw_helpdesk_tickets.status = '{$value}'";                                    
+                                               $filtermethod .= "{$or} 
phpgw_helpdesk_tickets.status = '{$value}'";
                                                $or = ' OR';
                                        }
                                }
@@ -347,7 +348,7 @@
 
                                if(!$allrows)
                                {
-                                       $this->db2->limit_query($sql . 
$ordermethod,$start,__LINE__,__FILE__);
+                                       $this->db2->limit_query($sql . 
$ordermethod,$start,__LINE__,__FILE__, $results);
                                }
                                else
                                {
@@ -507,14 +508,15 @@
 
                        if ($this->db->next_record())
                        {
-                               $ticket['assignedto']           = 
$this->db->f('assignedto');
-                               $ticket['user_id']                      = 
$this->db->f('user_id');
-                               $ticket['group_id']                     = 
$this->db->f('group_id');
+                               $ticket['assignedto']           = 
(int)$this->db->f('assignedto');
+                               $ticket['user_id']                      = 
(int)$this->db->f('user_id');
+                               $ticket['group_id']                     = 
(int)$this->db->f('group_id');
+                               $ticket['reverse_id']           = 
(int)$this->db->f('reverse_id');
                                $ticket['status']                       = 
$this->db->f('status');
                                $ticket['cat_id']                       = 
$this->db->f('cat_id');
                                $ticket['subject']                      = 
$this->db->f('subject', true);
                                $ticket['priority']                     = 
$this->db->f('priority');
-                               $ticket['details']                      = 
htmlspecialchars ($this->db->f('details', true));
+                               $ticket['details']                      = 
$this->db->f('details', true);
                                $ticket['location_code']        = 
$this->db->f('location_code');
                                $ticket['contact_phone']        = 
$this->db->f('contact_phone');
                                $ticket['contact_email']        = 
$this->db->f('contact_email',true);
@@ -540,9 +542,12 @@
                                $ticket['billable_hours']       = 
$this->db->f('billable_hours');
                                $ticket['modified_date'] = 
$this->db->f('modified_date');
 
-                               $user_id=(int)$this->db->f('user_id');
+                               if($ticket['reverse_id'])
+                               {
+                                       $ticket['reverse_name'] = 
$GLOBALS['phpgw']->accounts->get($ticket['reverse_id'])->__toString();
+                               }
 
-                               $ticket['user_name']    = 
$GLOBALS['phpgw']->accounts->get($user_id)->__toString();
+                               $ticket['user_name']    = 
$GLOBALS['phpgw']->accounts->get($ticket['user_id'])->__toString();
                                if ($ticket['assignedto'] > 0)
                                {
                                        $ticket['assignedto_name']      = 
$GLOBALS['phpgw']->accounts->get($ticket['assignedto'])->__toString();
@@ -553,7 +558,7 @@
                                        $ticket['attributes'] = 
$values['attributes'];
                                        foreach ($ticket['attributes'] as 
&$attr)
                                        {
-                                               $attr['value'] = 
$this->db->f($attr['column_name']);
+                                               $attr['value'] = 
$this->db->f($attr['column_name'], true);
                                        }
                                }
                        }
@@ -593,8 +598,15 @@
                                }
                        }
 
+                       if(!empty($ticket['reverse_id']))
+                       {
+                               $ticket['assignedto'] = 
$GLOBALS['phpgw_info']['user']['account_id'];
+                       }
+                       $ticket['user_id']      = !empty($ticket['reverse_id']) 
? $ticket['reverse_id'] : $GLOBALS['phpgw_info']['user']['account_id'];
+
                        $value_set['priority'] = isset($ticket['priority']) ? 
$ticket['priority'] : 0;
-                       $value_set['user_id'] = 
$GLOBALS['phpgw_info']['user']['account_id'];
+                       $value_set['user_id'] =  $ticket['user_id'];
+                       $value_set['reverse_id'] = 
$GLOBALS['phpgw_info']['user']['account_id']; //The originator for the reversed 
ticket
                        $value_set['assignedto'] = $ticket['assignedto'];
                        $value_set['group_id'] = $ticket['group_id'];
                        $value_set['subject'] = 
$this->db->db_addslashes($ticket['subject']);
@@ -899,6 +911,20 @@
                                $_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);
+
+                               $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');
+                               if ($old_status == 'X' || $old_closed)
+                               {
+                                       $config = 
CreateObject('phpgwapi.config', 'helpdesk')->read();
+                                       $new_status = 
!empty($config['reopen_status']) ? $config['reopen_status'] : '0';
+                                       $this->fields_updated[] = 'status';
+                                       $this->historylog->add('R', $id, 
$new_status, $old_status);
+                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET status='{$new_status}' WHERE id= {$id}", __LINE__, 
__FILE__);
+                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET priority = 1 WHERE id = {$id}", __LINE__, __FILE__);
+                               }
                        }
 
                        $value_set = array();
@@ -905,10 +931,17 @@
 
                        $data_attribute = 
$this->custom->prepare_for_db('phpgw_helpdesk_tickets', $values_attribute);
 
-                       if (isset($data_attribute['value_set']))
+                       if (!empty($data_attribute['value_set']))
                        {
+                               $this->db->query("SELECT * FROM 
phpgw_helpdesk_tickets WHERE id='$id'", __LINE__, __FILE__);
+                               $this->db->next_record();
                                foreach ($data_attribute['value_set'] as 
$input_name => $value)
                                {
+                                       $old_values = $this->db->f($input_name);
+                                       if($value == $old_values)
+                                       {
+                                               continue;
+                                       }
                                        $this->fields_updated[] = $input_name;
                                        $value_set[$input_name] = $value;
                                }
@@ -921,6 +954,7 @@
 
                        if (isset($this->fields_updated) && 
$this->fields_updated && $simple)
                        {
+                               $this->db->query("DELETE FROM 
phpgw_helpdesk_views WHERE id={$id} AND account_id !=" . (int) $this->account, 
__LINE__, __FILE__);
                                $receipt['message'][] = array('msg' => 
lang('Ticket has been updated'));
                                $this->db->transaction_commit();
                                return $receipt;
@@ -980,6 +1014,7 @@
 
                                if (($this->db->f('closed') || 
$ticket['status'] == 'X') && ($old_status != 'X' && !$old_closed))
                                {
+                                       $this->db->query("UPDATE 
phpgw_helpdesk_tickets SET priority = 0 WHERE id = {$id}", __LINE__, __FILE__);
                                        $location_id = 
$GLOBALS['phpgw']->locations->get_id('helpdesk', '.ticket');
                                        // at controller
                                        if 
(isset($GLOBALS['phpgw_info']['user']['apps']['controller']))
@@ -1038,13 +1073,15 @@
 
                                $this->db->query("UPDATE phpgw_helpdesk_tickets 
SET $value_set WHERE id={$id}", __LINE__, __FILE__);
                        }
-
-                       $this->db->transaction_commit();
-
+//                     _debug_array($this->fields_updated);die();
                        if (isset($this->fields_updated) && 
$this->fields_updated)
                        {
+                               $this->db->query("DELETE FROM 
phpgw_helpdesk_views WHERE id={$id} AND account_id !=" . (int) $this->account, 
__LINE__, __FILE__);
                                $receipt['message'][] = array('msg' => 
lang('Ticket has been updated'));
                        }
+
+                       $this->db->transaction_commit();
+
                        return $receipt;
                }
 
@@ -1107,7 +1144,7 @@
                                throw new Exception("phpgwapi_locations::get_id 
('helpdesk', '.ticket') returned 0");
                        }
 
-                       $this->db->transaction_begin(); 
+                       $this->db->transaction_begin();
 
                        $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__);

Modified: branches/dev-syncromind-2/helpdesk/inc/class.uitts.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/inc/class.uitts.inc.php  2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/inc/class.uitts.inc.php  2017-05-13 
14:15:15 UTC (rev 16738)
@@ -51,7 +51,8 @@
                                'columns'                       => true,
                                'update_data'           => true,
                                'upload_clip'           => true,
-                               'view_image'            => true
+                               'view_image'            => true,
+                               'get_reverse_assignee'=>true
                        );
 
                /**
@@ -180,11 +181,34 @@
                }
 
                /**
-                * Fetch data from $this->bo based on parametres
+                * called as ajax from edit form
+                *
+                * @param string  $query
+                *
                 * @return array
                 */
-               public function query()
+               public function get_reverse_assignee()
                {
+                       $query = phpgw::get_var('query');
+
+                       $filter = array('active' => 1);
+
+                       $account_list = 
$GLOBALS['phpgw']->accounts->get_list('accounts', -1,'ASC', 'account_lastname', 
 $query, false, $filter);
+
+                       $values = array();
+
+                       foreach ($account_list as $account)
+                       {
+                               $values[] = array(
+                                       'id' => $account->id,
+                                       'name' => $account->__toString()
+                               );
+                       }
+                       return array('ResultSet' => array('Result' => $values));
+               }
+
+               function get_params()
+               {
                        $search = phpgw::get_var('search');
                        $order = phpgw::get_var('order');
                        $draw = phpgw::get_var('draw', 'int');
@@ -207,7 +231,7 @@
                                'vendor_id' => $this->bo->vendor_id,
                                'district_id' => $this->bo->district_id,
                                'part_of_town_id' => $this->bo->part_of_town_id,
-                               'allrows' => $this->bo->allrows,
+                               //'allrows' => $this->bo->allrows,
                                'start_date' => $this->bo->start_date,
                                'end_date' => $this->bo->end_date,
                                'location_code' => $this->bo->location_code,
@@ -217,8 +241,20 @@
                                'ecodimb' => $this->bo->ecodimb,
                                'branch_id' => phpgw::get_var('branch_id'),
                                'order_dim1' => phpgw::get_var('order_dim1'),
+                               'check_date_type' => 
phpgw::get_var('check_date_type', 'int'),
                        );
 
+                       return $params;
+               }
+
+               /**
+                * Fetch data from $this->bo based on parametres
+                * @return array
+                */
+               public function query()
+               {
+                       $params = $this->get_params();
+
                        $values = $this->bo->read($params);
 
                        if ($values)
@@ -266,24 +302,91 @@
 
                function _print()
                {
-                       if(!$this->acl_read)
+                       if (!$this->acl_read)
                        {
-                               
$GLOBALS['phpgw']->redirect_link('/index.php',array('menuaction'=> 
'helpdesk.uilocation.stop', 'perm'=> 1, 'acl_location'=> $this->acl_location));
+                               $GLOBALS['phpgw']->redirect_link('/index.php', 
array('menuaction' => 'property.uilocation.stop',
+                                       'perm' => 1, 'acl_location' => 
$this->acl_location));
                        }
 
                        $GLOBALS['phpgw_info']['flags']['noheader'] = true;
                        $GLOBALS['phpgw_info']['flags']['nofooter'] = true;
                        $GLOBALS['phpgw_info']['flags']['xslt_app'] = false;
-                       $id     = phpgw::get_var('id', 'int');
+                       $id = phpgw::get_var('id', 'int');
 
-                       $ticket = $this->bo->mail_ticket($id, 
$fields_updated=true, $receipt = array(),$location_code='', $get_message = 
true);
+                       $ticket_html = $this->bo->mail_ticket($id, 
$fields_updated = true, $receipt = array(), $location_code = '', $get_message = 
true);
 
-                       $html = 
"<html><head><title>{$ticket['subject']}</title></head>";
-                       $html .= "<body>";
-                       $html .= $ticket['subject'] . '</br></br>';
-                       $html .= nl2br($ticket['body']);
-                       $html .= "</body></html>";
+                       $ticket = $this->bo->read_single($id);
 
+                       $content_files = array();
+
+                       $lang_files = lang('files');
+
+                       $files = '';
+                       if($ticket['files'])
+                       {
+                               $files = <<<HTML
+
+                               <br/>
+                               <table class='pure-table pure-table-bordered 
pure-table-striped'>
+                                       <thead>
+                                                       <tr>
+                                                               <th>
+                                                                       #
+                                                               </th>
+                                                               <th>
+                                                                       
{$lang_files}
+                                                               </th>
+                                                       </tr>
+                                               </thead>
+                                               <tbody>
+HTML;
+
+                               $i=1;
+                               foreach ($ticket['files'] as $_entry)
+                               {
+                                       $files .= <<<HTML
+
+                                       <tr>
+                                               <td>
+                                                       {$i}
+                                               </td>
+                                               <td>
+                                                       {$_entry['name']}
+                                               </td>
+                                       </tr>
+HTML;
+                                       $i++;
+                               }
+                               $files .= <<<HTML
+
+                                       </tbody>
+                               </table>
+
+HTML;
+
+                       }
+
+                       $lang_print = lang('print');
+
+                       $html = <<<HTML
+
+                       <!DOCTYPE html>
+                       <html>
+                               <head>
+                                       <title>{$ticket_html['subject']}</title>
+                                       <link 
href="{$GLOBALS['phpgw_info']['server']['webserver_url']}/phpgwapi/templates/pure/css/pure-min.css"
 type="text/css" rel="StyleSheet">
+                               </head>
+                                       <script type="text/javascript">
+                                       document.onload = window.print();
+                                       </script>
+                               <body>
+                                       <H2>{$ticket_html['subject']}</H2>
+                                       {$ticket_html['body']}
+                                       {$files}
+                               </body>
+                       </html>
+HTML;
+
                        echo $html;
                }
 
@@ -1327,7 +1430,7 @@
                                'lang_part_of_town' => lang('Part of town'),
                                'lang_no_part_of_town' => lang('No part of 
town'),
                                'cat_select' => 
$this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]',
-                                       'selected' => $this->cat_id, 'use_acl' 
=> $this->_category_acl, 'required' => true)),
+                                       'selected' => $this->cat_id, 'use_acl' 
=> $this->_category_acl, 'required' => true,'class'=>'pure-input-1-2')),
                                'pref_send_mail' => 
(isset($GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['tts_user_mailnotification'])
 ? 
$GLOBALS['phpgw_info']['user']['preferences']['helpdesk']['tts_user_mailnotification']
 : ''),
                                'fileupload' => 
true,//(isset($this->bo->config->config_data['fmttsfileupload']) ? 
$this->bo->config->config_data['fmttsfileupload'] : ''),
                                'tabs' => 
phpgwapi_jquery::tabview_generate($tabs, $active_tab)
@@ -1698,7 +1801,7 @@
                                        'value_id' => '', //not from 
historytable
                                        'value_count' => 1,
                                        'value_date' => 
$GLOBALS['phpgw']->common->show_date($ticket['timestamp']),
-                                       'value_user' => $ticket['user_name'],
+                                       'value_user' => $ticket['reverse_id']? 
$ticket['reverse_name'] : $ticket['user_name'],
                                        'value_note' => $ticket['details'],
                                        'value_publish' => 
$ticket['publish_note']
                                )
@@ -1736,7 +1839,8 @@
                                'data' => json_encode($additional_notes),
                                'config' => array(
                                        array('disableFilter' => true),
-                                       array('disablePagination' => true)
+                                       array('disablePagination' => true),
+                                       array('order' => 
json_encode(array(0,'asc')))
                                )
                        );
 
@@ -1848,7 +1952,7 @@
 //_debug_array($supervisor_email);die();
                        $msgbox_data = $this->bocommon->msgbox_data($receipt);
                        $cat_select = 
$this->cats->formatted_xslt_list(array('select_name' => 'values[cat_id]',
-                               'selected' => $this->cat_id, 'use_acl' => 
$this->_category_acl, 'required' => true));
+                               'selected' => $this->cat_id, 'use_acl' => 
$this->_category_acl, 'required' => true,'class'=>'pure-input-1-2'));
 
                        $_ticket_cat_found = false;
                        if (isset($cat_select['cat_list']) && 
is_array($cat_select['cat_list']))
@@ -1927,6 +2031,7 @@
                                'lang_user_statustext' => lang('Select the user 
the selection belongs to. To do not use a user select NO USER'),
                                'select_user_name' => 'values[assignedto]',
                                'value_assignedto_id' => $ticket['assignedto'],
+                               'value_owned_by'                => 
$ticket['user_name'],
                                'user_list' => 
$this->_get_user_list($ticket['assignedto']),
                                'lang_no_group' => lang('No group'),
                                'group_list' => 
$this->bo->get_group_list($ticket['group_id']),

Modified: 
branches/dev-syncromind-2/helpdesk/inc/custom/default/ticket_LRS_pre_commit_validate.php
===================================================================
--- 
branches/dev-syncromind-2/helpdesk/inc/custom/default/ticket_LRS_pre_commit_validate.php
    2017-05-13 04:35:18 UTC (rev 16737)
+++ 
branches/dev-syncromind-2/helpdesk/inc/custom/default/ticket_LRS_pre_commit_validate.php
    2017-05-13 14:15:15 UTC (rev 16738)
@@ -37,6 +37,12 @@
                        {
                                return;
                        }
+
+                       if(!empty($data['reverse_id']))
+                       {
+                               return true;
+                       }
+
                        $org_unit = (int)$values_attribute['1']['value'];
                        $sql = "SELECT arbeidssted FROM fm_org_unit WHERE id = 
{$org_unit}";
                        $this->db->query($sql);

Modified: branches/dev-syncromind-2/helpdesk/inc/hook_config.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/inc/hook_config.inc.php  2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/inc/hook_config.inc.php  2017-05-13 
14:15:15 UTC (rev 16738)
@@ -26,7 +26,36 @@
        along with this program.  If not, see <http://www.gnu.org/licenses/>.
        */
 
+       /**
+        * Get HTML listbox with workorder reopen status that are to be set 
when invoice is processed
+        *
+        * @param $config
+        * @return string HTML checkboxes to be placed in a table
+        */
+       function reopen_status( $config )
+       {
+               $status_entries = execMethod('helpdesk.botts.get_status_list');
 
+               $status_assigned = isset($config['reopen_status']) ? 
$config['reopen_status'] : array();
+
+               $out = '<option value="">' . lang('none selected') . 
'</option>' . "\n";
+               foreach ($status_entries as $status)
+               {
+                       $selected = '';
+                       if ($status_assigned == $status['id'])
+                       {
+                               $selected = ' selected = "selected"';
+                       }
+
+                       $out .= <<<HTML
+                       <option 
value='{$status['id']}'{$selected}>{$status['name']}</option>
+HTML;
+               }
+
+               return $out;
+       }
+
+
        /**
         * Get HTML checkbox with groups that are candidates for simplified tts 
interface
         *

Modified: branches/dev-syncromind-2/helpdesk/js/portico/tts.add.js
===================================================================
--- branches/dev-syncromind-2/helpdesk/js/portico/tts.add.js    2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/js/portico/tts.add.js    2017-05-13 
14:15:15 UTC (rev 16738)
@@ -262,4 +262,8 @@
                };
        }
 
-});
\ No newline at end of file
+});
+
+var oArgs = {menuaction: 'helpdesk.uitts.get_reverse_assignee'};
+var strURL = phpGWLink('index.php', oArgs, true);
+JqueryPortico.autocompleteHelper(strURL, 'reverse_name', 'reverse_id', 
'reverse_container');

Modified: branches/dev-syncromind-2/helpdesk/setup/phpgw_no.lang
===================================================================
--- branches/dev-syncromind-2/helpdesk/setup/phpgw_no.lang      2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/setup/phpgw_no.lang      2017-05-13 
14:15:15 UTC (rev 16738)
@@ -199,4 +199,6 @@
 select helpdesk        no      Velg
 modified       helpdesk        no      Endret
 sent   helpdesk        no      Sendt
-generic        helpdesk        no      Generelt
\ No newline at end of file
+generic        helpdesk        no      Generelt
+reverse        helpdesk        no      Revers tildeling
+owned by       helpdesk        no      Eies av
\ No newline at end of file

Modified: branches/dev-syncromind-2/helpdesk/setup/setup.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/setup/setup.inc.php      2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/setup/setup.inc.php      2017-05-13 
14:15:15 UTC (rev 16738)
@@ -12,7 +12,7 @@
        */
 
        $setup_info['helpdesk']['name']                 = 'helpdesk';
-       $setup_info['helpdesk']['version']              = '0.9.18.004';
+       $setup_info['helpdesk']['version']              = '0.9.18.005';
        $setup_info['helpdesk']['app_order']    = 8;
        $setup_info['helpdesk']['enable']               = 1;
        $setup_info['helpdesk']['app_group']    = 'office';

Modified: branches/dev-syncromind-2/helpdesk/setup/tables_current.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/setup/tables_current.inc.php     
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/setup/tables_current.inc.php     
2017-05-13 14:15:15 UTC (rev 16738)
@@ -35,6 +35,7 @@
                                'priority' => array('type' => 'int','precision' 
=> '2','nullable' => False),
                                'user_id' => array('type' => 'int','precision' 
=> '4','nullable' => True),
                                'assignedto' => array('type' => 
'int','precision' => '4','nullable' => True),
+                               'reverse_id' => array('type' => 
'int','precision' => '4','nullable' => True),
                                'subject' => array('type' => 
'varchar','precision' => '255','nullable' => True),
                                'cat_id' => array('type' => 'int','precision' 
=> '4','nullable' => True),
                                'billable_hours' => array('type' => 
'decimal','precision' => '8','scale' => '2','nullable' => True),

Modified: branches/dev-syncromind-2/helpdesk/setup/tables_update.inc.php
===================================================================
--- branches/dev-syncromind-2/helpdesk/setup/tables_update.inc.php      
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/setup/tables_update.inc.php      
2017-05-13 14:15:15 UTC (rev 16738)
@@ -216,4 +216,25 @@
                        $GLOBALS['setup_info']['helpdesk']['currentver'] = 
'0.9.18.004';
                        return $GLOBALS['setup_info']['helpdesk']['currentver'];
                }
+       }
+       /**
+       * Update helpdesk version from 0.9.18.004 to 0.9.18.005
+       */
+       $test[] = '0.9.18.004';
+
+       function helpdesk_upgrade0_9_18_004()
+       {
+               $GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
+
+               
$GLOBALS['phpgw_setup']->oProc->AddColumn('phpgw_helpdesk_tickets', 
'reverse_id', array(
+                       'type' => 'int',
+                       'precision' => '4',
+                       'nullable' => true
+               ));
+
+               if($GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit())
+               {
+                       $GLOBALS['setup_info']['helpdesk']['currentver'] = 
'0.9.18.005';
+                       return $GLOBALS['setup_info']['helpdesk']['currentver'];
+               }
        }
\ No newline at end of file

Modified: branches/dev-syncromind-2/helpdesk/templates/base/config.tpl
===================================================================
--- branches/dev-syncromind-2/helpdesk/templates/base/config.tpl        
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/templates/base/config.tpl        
2017-05-13 14:15:15 UTC (rev 16738)
@@ -40,6 +40,14 @@
                                {lang_default}: {lang_Open}</td>
                        <td><input name="newsettings[tts_lang_open]" 
value="{value_tts_lang_open}"></td>
                </tr>
+                       <tr>
+                               <td>{lang_reopen_status}:</td>
+                               <td>
+                                       <select 
name="newsettings[reopen_status]">
+                                               {hook_reopen_status}
+                                       </select>
+                               </td>
+                       <tr>
                <tr class="pure-table-odd">
                        <td >{lang_TTS_disable_assign_to_user_on_add}:</td>
                        <td>

Modified: branches/dev-syncromind-2/helpdesk/templates/base/files.xsl
===================================================================
--- branches/dev-syncromind-2/helpdesk/templates/base/files.xsl 2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/templates/base/files.xsl 2017-05-13 
14:15:15 UTC (rev 16738)
@@ -1,149 +1,53 @@
-<xsl:template name="file_list">
-       <tr>
-               <td width="19%" align="left" valign="top">
-                       <xsl:value-of select="//lang_files"/>
-               </td>
-               <td>
-                       <table>
-                               <tr class="th">
-                                       <td class="th_text" width="85%" 
align="left">
-                                               <xsl:value-of 
select="lang_filename"/>
-                                       </td>
-                                       <td class="th_text" width="15%" 
align="center">
-                                               <xsl:value-of 
select="lang_file_action"/>
-                                       </td>
-                               </tr>
-                               <xsl:for-each select="files" >
-                                       <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:choose>
-                                                               <xsl:when 
test="//link_to_files!=''">
-                                                                       
<xsl:variable name="link_to_file"><xsl:value-of 
select="//link_to_files"/>/<xsl:value-of select="directory"/>/<xsl:value-of 
select="file_name"/></xsl:variable>
-                                                                       <a 
href="{$link_to_file}" target="_blank" 
title="{//lang_view_file_statustext}"><xsl:value-of select="name"/></a>
-                                                               </xsl:when>
-                                                               <xsl:otherwise>
-                                                                       
<xsl:variable name="link_view_file"><xsl:value-of 
select="//link_view_file"/>&amp;file_name=<xsl:value-of 
select="file_name"/></xsl:variable>
-                                                                       <a 
href="{$link_view_file}" target="_blank" 
title="{//lang_view_file_statustext}"><xsl:value-of select="name"/></a>
-                                                               </xsl:otherwise>
-                                                       </xsl:choose>
-                                                       <xsl:text> </xsl:text>
-                                               </td>
-                                               <td align="center">
-                                                       <input type="checkbox" 
name="values[file_action][]" value="{name}"  
onMouseout="window.status='';return true;">
-                                                               <xsl:attribute 
name="title">
-                                                                       
<xsl:value-of select="//lang_file_action_statustext"/>
-                                                               </xsl:attribute>
-                                                       </input>
-                                               </td>
-                                       </tr>
-                               </xsl:for-each>
-                       </table>
-               </td>
-       </tr>
+
+<!-- $Id: files.xsl 15892 2016-10-24 13:50:59Z sigurdne $ -->
+
+<xsl:template name="multi_upload">
+       <xsl:apply-templates select="multi_upload"/>
 </xsl:template>
 
-<xsl:template name="file_list_view">
-       <tr>
-               <td align="left" valign="top">
-                       <xsl:value-of select="//lang_files"/>
-               </td>
-               <td>
-                       <table>
-                               <tr class="th">
-                                       <td class="th_text" width="85%" 
align="left">
-                                               <xsl:value-of 
select="lang_filename"/>
-                                       </td>
-                               </tr>
-                               <xsl:for-each select="files" >
-                                       <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:choose>
-                                                               <xsl:when 
test="//link_to_files!=''">
-                                                                       
<xsl:variable name="link_to_file"><xsl:value-of 
select="//link_to_files"/>/<xsl:value-of select="directory"/>/<xsl:value-of 
select="file_name"/></xsl:variable>
-                                                                       <a 
href="{$link_to_file}" target="_blank" 
title="{//lang_view_file_statustext}"><xsl:value-of select="name"/></a>
-                                                               </xsl:when>
-                                                               <xsl:otherwise>
-                                                                       
<xsl:variable name="link_view_file"><xsl:value-of 
select="//link_view_file"/>&amp;file_name=<xsl:value-of 
select="file_name"/></xsl:variable>
-                                                                       <a 
href="{$link_view_file}" target="_blank" 
title="{//lang_view_file_statustext}"><xsl:value-of select="name"/></a>
-                                                               </xsl:otherwise>
-                                                       </xsl:choose>
-                                                       <xsl:text> </xsl:text>
-                                               </td>
-                                       </tr>
-                               </xsl:for-each>
-                       </table>
-               </td>
-       </tr>
+<xsl:template xmlns:php="http://php.net/xsl"; match="multi_upload">
+       <xsl:call-template name="multi_upload_file"/>
 </xsl:template>
 
-<xsl:template name="file_upload" xmlns:php="http://php.net/xsl";>
-       <tr>
-               <td valign="top">
-                       <xsl:value-of select="lang_upload_file"/>
-               </td>
-               <td>
-                       <input type="file" name="file" size="40" 
onMouseout="window.status='';return true;">
-                               <xsl:attribute name="title">
-                                       <xsl:value-of 
select="//lang_file_statustext"/>
-                               </xsl:attribute>
-                       </input>
-               </td>
-       </tr>
+
+<!-- New template-->
+<xsl:template xmlns:php="http://php.net/xsl"; name="file_upload">
+       <div class="pure-control-group">
+               <label>
+                       <xsl:value-of select="php:function('lang', 'upload 
files')"/>
+               </label>
+               <input type="file" name="file" size="40" class="pure-input-1-2" 
>
+                       <xsl:attribute name="title">
+                               <xsl:value-of select="php:function('lang', 
'Select file to upload')"/>
+                       </xsl:attribute>
+               </input>
+       </div>
        <xsl:choose>
                <xsl:when test="multiple_uploader!=''">
-                       <tr>
-                               <td>
+                       <div class="pure-control-group">
+                               <label>
                                        <a href="javascript:fileuploader()">
                                                <xsl:attribute name="title">
-                                                       <xsl:value-of 
select="php:function('lang', 'upload multiple files')" />
+                                                       <xsl:value-of 
select="php:function('lang', 'upload multiple files')"/>
                                                </xsl:attribute>
-                                               <xsl:value-of 
select="php:function('lang', 'upload multiple files')" />
+                                               <xsl:value-of 
select="php:function('lang', 'upload multiple files')"/>
                                        </a>
-                               </td>
-                               <td>
-                               </td>
-                       </tr>
+                               </label>
+                       </div>
                </xsl:when>
        </xsl:choose>
 </xsl:template>
 
-<xsl:template name="jasper_upload" xmlns:php="http://php.net/xsl";>
-       <tr>
-               <td valign="top">
+<!-- New template-->
+<xsl:template xmlns:php="http://php.net/xsl"; name="jasper_upload">
+       <div class="pure-control-group">
+               <label>
                        <xsl:value-of select="php:function('lang', 'jasper 
upload')"/>
-               </td>
-               <td>
-                       <input type="file" name="jasperfile" size="40">
-                               <xsl:attribute name="title">
-                                       <xsl:value-of 
select="php:function('lang', 'upload a jasper definition file')"/>
-                               </xsl:attribute>
-                       </input>
-               </td>
-       </tr>
+               </label>
+               <input type="file" name="jasperfile" size="40">
+                       <xsl:attribute name="title">
+                               <xsl:value-of select="php:function('lang', 
'upload a jasper definition file')"/>
+                       </xsl:attribute>
+               </input>
+       </div>
 </xsl:template>

Modified: branches/dev-syncromind-2/helpdesk/templates/base/tts.xsl
===================================================================
--- branches/dev-syncromind-2/helpdesk/templates/base/tts.xsl   2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/helpdesk/templates/base/tts.xsl   2017-05-13 
14:15:15 UTC (rev 16738)
@@ -87,6 +87,18 @@
                                                                        
<xsl:call-template name="user_id_select"/>
                                                                </div>
                                                        </xsl:if>
+                                                       <div 
class="pure-control-group">
+                                                               <xsl:variable 
name="lang_reverse">
+                                                                       
<xsl:value-of select="php:function('lang', 'reverse')"/>
+                                                               </xsl:variable>
+                                                               <label>
+                                                                       
<xsl:value-of select="$lang_reverse"/>
+                                                               </label>
+                                                               <input 
type="hidden" id="reverse_id" name="values[reverse_id]"  
value="{value_reverse_id}"/>
+                                                               <input 
type="text" id="reverse_name" name="values[reverse_name]" 
value="{value_reverse_name}" class="pure-input-1-2">
+                                                               </input>
+                                                               <div 
id="reverse_container"/>
+                                                       </div>
                                                        <!--xsl:call-template 
name="contact_form"/-->
                                                        <!--div 
class="pure-control-group">
                                                                <label>
@@ -115,7 +127,7 @@
                                                                        
<xsl:variable name="select_priority_name">
                                                                                
<xsl:value-of select="select_priority_name"/>
                                                                        
</xsl:variable>
-                                                                       <select 
name="{$select_priority_name}" title="{$lang_priority_statustext}">
+                                                                       <select 
name="{$select_priority_name}" title="{$lang_priority_statustext}" 
class="pure-input-1-2" >
                                                                                
<xsl:apply-templates select="priority_list/options"/>
                                                                        
</select>
                                                                </div>
@@ -125,7 +137,7 @@
                                                                        
<xsl:value-of select="php:function('lang', 'status')"/>
                                                                </label>
 
-                                                               <select 
id="status_id" name="values[status]">
+                                                               <select 
id="status_id" name="values[status]" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="title">
                                                                                
<xsl:value-of select="php:function('lang', 'Set the status of the ticket')"/>
                                                                        
</xsl:attribute>
@@ -154,7 +166,7 @@
                                                        <xsl:value-of 
select="php:function('lang', 'subject')"/>
                                                </label>
 
-                                               <input type="text" 
name="values[subject]" value="{value_subject}" size="60" >
+                                               <input type="text" 
name="values[subject]" value="{value_subject}" size="60"  
class="pure-input-1-2" >
                                                        <xsl:attribute 
name="title">
                                                                <xsl:value-of 
select="php:function('lang', 'Enter the subject of this ticket')"/>
                                                        </xsl:attribute>
@@ -174,7 +186,7 @@
                                                        <xsl:value-of 
select="php:function('lang', 'Details')"/>
                                                </label>
 
-                                               <textarea cols="60" rows="10" 
name="values[details]" >
+                                               <textarea cols="60" rows="10" 
name="values[details]"  class="pure-input-1-2" >
                                                        <xsl:attribute 
name="title">
                                                                <xsl:value-of 
select="php:function('lang', 'Enter the details of this ticket')"/>
                                                        </xsl:attribute>
@@ -209,7 +221,7 @@
                                                        <br/>
                                                        <xsl:text>Ctrl + 
V</xsl:text>
                                                </label>
-                                               <canvas title="Copy image data 
into clipboard and press Ctrl+V" style="border:1px solid grey;" id="my_canvas" 
width="100" height="100">
+                                               <canvas title="Copy image data 
into clipboard and press Ctrl+V" style="border:1px solid grey;" id="my_canvas" 
width="100" height="10" class="pure-input-1-2" >
                                                </canvas>
                                                <input type="hidden" 
id="pasted_image" name="pasted_image"></input>
                                                <input type="hidden" 
id="pasted_image_is_blank" name="pasted_image_is_blank" value="1"></input>
@@ -250,9 +262,9 @@
 
                function response_lookup()
                {
-                       var oArgs = 
{menuaction:'helpdesk.uilookup.response_template',type:'response_template'};
-                       var strURL = phpGWLink('index.php', oArgs);
-                       TINY.box.show({iframe:strURL, 
boxid:"frameless",width:750,height:450,fixed:false,maskid:"darkmask",maskopacity:40,
 mask:true, animate:true, close: true});
+               var oArgs = 
{menuaction:'helpdesk.uilookup.response_template',type:'response_template'};
+               var strURL = phpGWLink('index.php', oArgs);
+               TINY.box.show({iframe:strURL, 
boxid:"frameless",width:750,height:450,fixed:false,maskid:"darkmask",maskopacity:40,
 mask:true, animate:true, close: true});
                }
 
                var my_groups = <xsl:value-of select="my_groups"/>;
@@ -263,7 +275,15 @@
                //      var initialSelection = <xsl:value-of 
select="resources_json"/>;
                var lang = <xsl:value-of select="php:function('js_lang',  
'Name', 'Address')"/>
 
+               function open_print_view()
+               {
+               var oArgs = {menuaction:'helpdesk.uitts._print',id: 
$('#id').val()};
+               var strURL = phpGWLink('index.php', oArgs);
+               var win = window.open(strURL, '_blank');
+               win.focus();
+               }
 
+
        </script>
        <dl>
                <xsl:choose>
@@ -295,8 +315,13 @@
                                                </input>
                                                <input type="hidden" id="id" 
name="id" value="{id}">
                                                </input>
-
                                        </div>
+                                       <div class="pure-control-group">
+                                               <label>
+                                                       <xsl:value-of 
select="php:function('lang', 'owned by')"/>
+                                               </label>
+                                               <xsl:value-of 
select="value_owned_by"/>
+                                       </div>
                                        <xsl:for-each select="value_origin">
                                                <div class="pure-control-group">
                                                        <label>
@@ -417,7 +442,7 @@
                                                                        
<xsl:variable name="select_priority_name">
                                                                                
<xsl:value-of select="select_priority_name"/>
                                                                        
</xsl:variable>
-                                                                       <select 
name="{$select_priority_name}" class="forms" 
title="{$lang_priority_statustext}" 
onMouseover="window.status='{$lang_priority_statustext}'; return true;" 
onMouseout="window.status='';return true;">
+                                                                       <select 
name="{$select_priority_name}" title="{$lang_priority_statustext}" 
class="pure-input-1-2" >
                                                                                
<xsl:apply-templates select="priority_list/options"/>
                                                                        
</select>
                                                                </div>
@@ -426,7 +451,7 @@
                                                                <label>
                                                                        
<xsl:value-of select="php:function('lang', 'status')"/>
                                                                </label>
-                                                               <select 
id="status_id" name="values[status]" class="forms">
+                                                               <select 
id="status_id" name="values[status]" class="pure-input-1-2" >
                                                                        
<xsl:attribute name="title">
                                                                                
<xsl:value-of select="php:function('lang', 'Set the status of the ticket')"/>
                                                                        
</xsl:attribute>
@@ -548,7 +573,7 @@
                                                        <br/>
                                                        <xsl:text>Ctrl + 
V</xsl:text>
                                                </label>
-                                               <canvas title="Copy image data 
into clipboard and press Ctrl+V" style="border:1px solid grey;" id="my_canvas" 
width="100" height="100">
+                                               <canvas title="Copy image data 
into clipboard and press Ctrl+V" style="border:1px solid grey;" id="my_canvas" 
width="100" height="10" class="pure-input-1-2" >
                                                </canvas>
                                                <input type="hidden" 
id="pasted_image" name="pasted_image"></input>
                                        </div>
@@ -671,6 +696,11 @@
                                        <xsl:value-of 
select="php:function('lang', 'Back to the ticket list')"/>
                                </xsl:attribute>
                        </input>
+                       <input type="button" class="pure-button 
pure-button-primary" name="print_view" onClick="open_print_view();">
+                               <xsl:attribute name="value">
+                                       <xsl:value-of 
select="php:function('lang', 'print view')"/>
+                               </xsl:attribute>
+                       </input>
                </div>
        </form>
 

Modified: 
branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_.inc.php     
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_.inc.php     
2017-05-13 14:15:15 UTC (rev 16738)
@@ -215,7 +215,7 @@
                 * @return array list of accounts that match criteria
                 */
                abstract public function get_list($_type='both', $start = -1, 
$sort = '',
-                                                                               
        $order = '', $query = '', $offset = -1);
+                                                                               
        $order = '', $query = '', $offset = -1, $filter = array());
 
                /**
                 * Convert an account login id to an account id

Modified: 
branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_ldap.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_ldap.inc.php 
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_ldap.inc.php 
2017-05-13 14:15:15 UTC (rev 16738)
@@ -307,7 +307,7 @@
                * @param integer $offset Offset from start position (-1 == no 
limit)
                * @return array|boolean List with all accounts|groups or false
                */
-               public function get_list($_type = 'both', $start = -1, $sort = 
'', $order = '', $query = '', $offset = -1)
+               public function get_list($_type = 'both', $start = -1, $sort = 
'', $order = '', $query = '', $offset = -1, $filter = array())
                {
                        //echo "accounts_ldap:get_list($_type, $start, $sort, 
$order, $query, $offset) called<br>";
                        $query = strtolower($query);

Modified: 
branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_sql.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_sql.inc.php  
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/accounts/class.accounts_sql.inc.php  
2017-05-13 14:15:15 UTC (rev 16738)
@@ -437,7 +437,7 @@
                 * @return array list of accounts that match criteria
                 */
                public function get_list($_type='both', $start = -1, $sort = '',
-                                                               $order = '', 
$query = '', $offset = -1)
+                                                               $order = '', 
$query = '', $offset = -1, $filter = array())
                {
                        // For XML-RPC
 /*                     if (is_array($_type))
@@ -468,26 +468,30 @@
                        }
 
                        $whereclause = '';
+
+                       $where = 'WHERE';
+
+                       if($filter['active'] == 1)
+                       {
+                               $whereclause = "{$where} account_status = 'A'";
+                               $where = 'AND';
+                       }
+
                        switch($_type)
                        {
                                case 'accounts':
-                                       $whereclause = "WHERE account_type = 
'u'";
+                                       $whereclause .= " {$where} account_type 
= 'u'";
+                                       $where = 'AND';
                                        break;
                                case 'groups':
-                                       $whereclause = "WHERE account_type = 
'g'";
+                                       $whereclause .= " {$where} account_type 
= 'g'";
+                                       $where = 'AND';
                                        break;
                        }
 
                        if ($query)
                        {
-                               if ($whereclause)
-                               {
-                                       $whereclause .= ' AND (';
-                               }
-                               else
-                               {
-                                       $whereclause = ' WHERE (';
-                               }
+                               $whereclause .= " {$where} (";
 
                                if(ctype_digit($query))
                                {

Modified: 
branches/dev-syncromind-2/phpgwapi/inc/auth/class.auth_customsso.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/auth/class.auth_customsso.inc.php    
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/auth/class.auth_customsso.inc.php    
2017-05-13 14:15:15 UTC (rev 16738)
@@ -75,9 +75,22 @@
                public function get_username()
                {
                        $headers = getallheaders();
-
                        $ssn = $headers['uid'];
 
+                       $remote_user = explode('@', $headers['REMOTE_USER']);
+                       $username  = $remote_user[0];
+
+                       /**
+                        * Shibboleth from inside firewall
+                        */
+                       if($username && !$ssn)
+                       {
+                               return $username;
+                       }
+
+                       /**
+                        * Shibboleth from outside firewall
+                        */
                        if(!$ssn)
                        {
                                return;
@@ -98,27 +111,46 @@
                                return $username;
                        }
 
+                       $db = createObject('phpgwapi.db_adodb', null, null, 
true);
 
-                       // Alternative
-                       $config = 
CreateObject('phpgwapi.config','rental')->read();
+                       // Alternative config
+                       $config = CreateObject('admin.soconfig', 
$GLOBALS['phpgw']->locations->get_id('property', '.admin'));
 
-                       if(! $config['external_db_host'] || 
!$this->ping($config['external_db_host']))
+                       if ($config->config_data['fellesdata']['host'])
                        {
-                               $message ="Database server 
{$config['external_db_host']} is not accessible";
-                               phpgwapi_cache::message_set($message, 'error');
-       //                      return false;
+                               if( 
!$this->ping($config->config_data['fellesdata']['host']))
+                               {
+                                       $message = "Database server 
{$config->config_data['fellesdata']['host']} is not accessible";
+                                       phpgwapi_cache::message_set($message, 
'error');
+                               }
+
+                               $db->debug = false;
+                               $db->Host = 
$config->config_data['fellesdata']['host'];
+                               $db->Port = 
$config->config_data['fellesdata']['port'];
+                               $db->Type = 'oracle';
+                               $db->Database = 
$config->config_data['fellesdata']['db_name'];
+                               $db->User = 
$config->config_data['fellesdata']['user'];
+                               $db->Password = 
$config->config_data['fellesdata']['password'];
+
                        }
+                       else
+                       {
+                               $config = 
CreateObject('phpgwapi.config','rental')->read();
 
-//                     $db = createObject('phpgwapi.db', null, null, true);
-                       $db = createObject('phpgwapi.db_adodb', null, null, 
true);
+                               if(! $config['external_db_host'] || 
!$this->ping($config['external_db_host']))
+                               {
+                                       $message ="Database server 
{$config['external_db_host']} is not accessible";
+                                       phpgwapi_cache::message_set($message, 
'error');
+                               }
 
-                       $db->debug = !!$config['external_db_debug'];
-                       $db->Host = $config['external_db_host'];
-                       $db->Port = $config['external_db_port'];
-                       $db->Type = $config['external_db_type'];
-                       $db->Database = $config['external_db_name'];
-                       $db->User = $config['external_db_user'];
-                       $db->Password = $config['external_db_password'];
+                               $db->debug = !!$config['external_db_debug'];
+                               $db->Host = $config['external_db_host'];
+                               $db->Port = $config['external_db_port'];
+                               $db->Type = $config['external_db_type'];
+                               $db->Database = $config['external_db_name'];
+                               $db->User = $config['external_db_user'];
+                               $db->Password = $config['external_db_password'];
+                       }
 
                        try
                        {
@@ -131,7 +163,6 @@
                                return false;
                        }
 
-
                        $sql = "SELECT BRUKERNAVN FROM V_AD_PERSON WHERE 
FODSELSNR ='{$ssn}'";
                        $db->query($sql,__LINE__,__FILE__);
                        $db->next_record();

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.acl.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.acl.inc.php    2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.acl.inc.php    2017-05-13 
14:15:15 UTC (rev 16738)
@@ -1523,13 +1523,16 @@
                                                }
                                        }
 
-                                       foreach ( $accounts[$grantor] as 
$grantors )
+                                       if(isset($accounts[$grantor]) && 
is_array($accounts[$grantor]))
                                        {
-                                               if ( 
!isset($grants['accounts'][$grantors]) )
+                                               foreach ( $accounts[$grantor] 
as $grantors )
                                                {
-                                                       
$grants['accounts'][$grantors] = 0;
+                                                       if ( 
!isset($grants['accounts'][$grantors]) )
+                                                       {
+                                                               
$grants['accounts'][$grantors] = 0;
+                                                       }
+                                                       
$grants['accounts'][$grantors] |= $rights;
                                                }
-                                               $grants['accounts'][$grantors] 
|= $rights;
                                        }
                                }
                        }

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.bocommon.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.bocommon.inc.php       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.bocommon.inc.php       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -52,12 +52,13 @@
                        $order = phpgw::get_var('order');
                        $draw = phpgw::get_var('draw', 'int');
                        $columns = phpgw::get_var('columns');
+                       $sort = $columns[$order[0]['column']]['data'];
 
                        $params = array(
                                'start' => phpgw::get_var('start', 'int', 
'REQUEST', 0),
                                'results' => phpgw::get_var('length', 'int', 
'REQUEST', 0),
                                'query' => $query ? $query : $search['value'],
-                               'sort' => $columns[$order[0]['column']]['data'],
+                               'sort' => false,
                                'dir' => $order[0]['dir'],
                                'allrows' => phpgw::get_var('length', 'int') == 
-1,
                        );
@@ -68,6 +69,11 @@
                                {
                                        $params['filters'][$field] = 
phpgw::get_var("filter_$field", $_params['type']);
                                }
+
+                               if($field == $order)
+                               {
+                                       $params['sort'] = $field;
+                               }
                        }
 
                        return $params;

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.db.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.db.inc.php     2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.db.inc.php     2017-05-13 
14:15:15 UTC (rev 16738)
@@ -100,6 +100,8 @@
 
                var $persistent = false;
                var $delayPointer = false;
+
+               var $error_message = '';
                /**
                * Constructor
                * @param string $query query to be executed (optional)
@@ -171,6 +173,10 @@
 
                }
 
+               public function get_error_message( )
+               {
+                       return $this->error_message;
+               }
                /**
                * Backward compatibility for get current connection id
                * @return bool true
@@ -275,10 +281,10 @@
                */
                function get_offset($sql = '', $offset, $num_rows = 0)
                {
-                       $offset         = (int)$offset;
+                       $offset         =  $offset < 0 ? 0 : (int)$offset;
                        $num_rows       = (int)$num_rows;
 
-                       if ($num_rows == 0)
+                       if ($num_rows <= 0)
                        {
                                $maxmatches = 
$GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs'];
                                $num_rows = isset($maxmatches) && $maxmatches ? 
(int)$maxmatches : 15;

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.db_adodb.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.db_adodb.inc.php       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.db_adodb.inc.php       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -216,7 +216,7 @@
                                {
                                        $message = 'could not connect to 
server';
                                }
-
+                               $this->error_message = $e->getMessage();
                                throw new Exception($message);
                                return false;
                        }

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.db_pdo.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.db_pdo.inc.php 2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.db_pdo.inc.php 2017-05-13 
14:15:15 UTC (rev 16738)
@@ -245,7 +245,7 @@
                                {
                                        $message = 'could not connect to 
server';
                                }
-
+                               $this->error_message = $e->getMessage();
                                throw new Exception($message);
                                return false;
                        }

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.jquery.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.jquery.inc.php 2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.jquery.inc.php 2017-05-13 
14:15:15 UTC (rev 16738)
@@ -58,13 +58,13 @@
                                phpgwapi_cache::message_set($message, 'error');
 
                                $_jquery_core = 'jquery-1.11.3'; // In case we 
need IE 6–8 support.
-                               $_jquery_migrate = 'jquery-migrate-1.4.1.min';
+       //                      $_jquery_migrate = 'jquery-migrate-1.4.1.min';
                        }
                        else
                        {
                //              $_jquery_core = 'jquery-2.1.4';
-                               $_jquery_core = 'jquery-3.1.1';
-                               $_jquery_migrate = 'jquery-migrate-3.0.0.min';
+                               $_jquery_core = 'jquery-3.2.1';
+       //                      $_jquery_migrate = 'jquery-migrate-3.0.0.min';
                        }
 
                        $_jquery_ui = 'jquery-ui-1.12.1';

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.login.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.login.inc.php  2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.login.inc.php  2017-05-13 
14:15:15 UTC (rev 16738)
@@ -90,6 +90,12 @@
                        /* Program starts here */
                        $uilogin = new phpgw_uilogin($tmpl, 
$GLOBALS['phpgw_info']['server']['auth_type'] == 'remoteuser' && 
!isset($GLOBALS['phpgw_remote_user']));
 
+                       if(phpgw::get_var('hide_lightbox', 'bool'))
+                       {
+                               $uilogin->phpgw_display_login(array());
+                               exit;
+                       }
+
                        if ($GLOBALS['phpgw_info']['server']['auth_type'] == 
'remoteuser' && isset($GLOBALS['phpgw_info']['server']['mapping']) && 
!empty($GLOBALS['phpgw_info']['server']['mapping']) && 
isset($_SERVER['REMOTE_USER']))
                        {
                                $login = 
$GLOBALS['phpgw']->mapping->get_mapping($_SERVER['REMOTE_USER']);
@@ -123,6 +129,7 @@
                                // remove entities to stop mangling
                                $passwd  = 
html_entity_decode(phpgw::get_var('passwd', 'string', 'POST'));
                        }
+
                        if ($GLOBALS['phpgw_info']['server']['auth_type'] == 
'http' && isset($_SERVER['PHP_AUTH_USER']))
                        {
                                $submit  = true;
@@ -180,15 +187,21 @@
                                $extra_vars['cd'] = 'yes';
 
                                $GLOBALS['phpgw']->hooks->process('login');
-                               if ($after)
+                               if ($lightbox)
                                {
-                                       $this->redirect_after($frontend);
+                                       
$GLOBALS['phpgw']->redirect_link("{$frontend}/login.php", array('hide_lightbox' 
=> true));
                                }
                                else
                                {
-                                       
$GLOBALS['phpgw']->redirect_link("{$frontend}/home.php", $extra_vars);
+                                       if ($after)
+                                       {
+                                               
$this->redirect_after($frontend);
+                                       }
+                                       else
+                                       {
+                                               
$GLOBALS['phpgw']->redirect_link("{$frontend}/home.php", $extra_vars);
+                                       }
                                }
-
                        //----------------- End login ntlm
                        }
 
@@ -225,16 +238,23 @@
                                unset($sslattributes);
                        }
 
-                       if ($GLOBALS['phpgw_info']['server']['auth_type'] == 
'customsso' && !isset($_GET['cd']))
+                       if ($GLOBALS['phpgw_info']['server']['auth_type'] == 
'customsso' &&  (!isset($_REQUEST['skip_remote']) || !$_REQUEST['skip_remote']))
                        {
-
                                //Reset auth object
                                $GLOBALS['phpgw']->auth = 
createObject('phpgwapi.auth');
                                $login = 
$GLOBALS['phpgw']->auth->get_username();
 
-                               $GLOBALS['sessionid'] = 
$GLOBALS['phpgw']->session->create($login, '');
+                               if($login)
+                               {
+                                       $GLOBALS['hook_values'] = array
+                                       (
+                                               'account_lid' => $login
+                                       );
+                                       
$GLOBALS['phpgw']->hooks->process('auto_addaccount', array('frontend'));
+                                       $GLOBALS['sessionid'] = 
$GLOBALS['phpgw']->session->create($login, '');
+                               }
 
-                               if (!isset($GLOBALS['sessionid']) || 
!$GLOBALS['sessionid'])
+                               if (!$login || empty($GLOBALS['sessionid']))
                                {
                                        $cd_array = array();
                                        if 
($GLOBALS['phpgw']->session->cd_reason)
@@ -243,6 +263,11 @@
                                        }
                                        $cd_array['skip_remote'] = true;
 
+                                       if ($lightbox)
+                                       {
+                                               $cd_array['lightbox'] = true;
+                                       }
+
                                        
$GLOBALS['phpgw']->redirect_link("/{$partial_url}", $cd_array);
                                        exit;
                                }
@@ -263,18 +288,24 @@
 
                                $extra_vars['cd'] = 'yes';
 
-                               $GLOBALS['phpgw']->hooks->process('login');
-                               if ($after)
+                               if ($lightbox)
                                {
-                                       $this->redirect_after($frontend);
+                                       
$GLOBALS['phpgw']->redirect_link("{$frontend}/login.php", array('hide_lightbox' 
=> true));
                                }
                                else
                                {
-                                       
$GLOBALS['phpgw']->redirect_link("{$frontend}/home.php", $extra_vars);
+                                       
$GLOBALS['phpgw']->hooks->process('login');
+                                       if ($after)
+                                       {
+                                               
$this->redirect_after($frontend);
+                                       }
+                                       else
+                                       {
+                                               
$GLOBALS['phpgw']->redirect_link("{$frontend}/home.php", $extra_vars);
+                                       }
                                }
                        }
 
-
                        if ((isset($_POST['submitit']) || 
isset($_POST['submit_x']) || isset($_POST['submit_y'])))
                        {
                                if ($_SERVER['REQUEST_METHOD'] != 'POST' &&
@@ -347,7 +378,6 @@
                                }
                                $extra_vars['cd'] = 'yes';
 
-                               $GLOBALS['phpgw']->hooks->process('login');
 
                                if ($lightbox)
                                {
@@ -355,6 +385,7 @@
                                }
                                else
                                {
+                                       
$GLOBALS['phpgw']->hooks->process('login');
                                        if ($after)
                                        {
                                                
$this->redirect_after($frontend);

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.sessions.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.sessions.inc.php       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.sessions.inc.php       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -607,6 +607,13 @@
                                }
                        }
 
+                       $request_scheme = empty($_SERVER['HTTPS']) || 
$_SERVER['HTTPS'] == 'off' ? 'http' : 'https';
+
+                       if($request_scheme == 'https')
+                       {
+                               $GLOBALS['phpgw_info']['server']['enforce_ssl'] 
= true;
+                       }
+
                        if ( 
isset($GLOBALS['phpgw_info']['server']['enforce_ssl'])
                                && 
$GLOBALS['phpgw_info']['server']['enforce_ssl'])
                        {

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.socommon.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.socommon.inc.php       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.socommon.inc.php       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -160,7 +160,7 @@
                        {
                                return date($this->dateformat, 
strtotime($value));
                        }
-                       return $value;
+                       return $this->db->stripslashes($value);
                }
 
                /**
@@ -304,7 +304,10 @@
                                                        while 
($this->db->next_record())
                                                        {
                                                                $id = 
$this->unmarshal($this->db->f($key, false), 'int');
-                                                               
$results[$id_map[$id]][$field] = array();
+                                                               
if(empty($results[$id_map[$id]][$field]))
+                                                               {
+                                                                       
$results[$id_map[$id]][$field] = array();
+                                                               }
                                                                $data = array();
                                                                foreach 
($params['manytomany']['column'] as $intOrCol => $paramsOrCol)
                                                                {
@@ -332,7 +335,7 @@
                                                        while 
($this->db->next_record())
                                                        {
                                                                $id = 
$this->unmarshal($this->db->f($key, false), 'int');
-                                                               
if(!isset($results[$id_map[$id]][$field]))
+                                                               
if(empty($results[$id_map[$id]][$field]))
                                                                {
                                                                        
$results[$id_map[$id]][$field] = array();
                                                                }
@@ -411,7 +414,8 @@
                        {
                                if($acl_condition && !$acl_test)
                                {
-                                       phpgw::no_access();
+                                       $message = lang('do you represent the 
owner of this entry?');
+                                       phpgw::no_access(false, $message);
                                }
 
                                foreach ($this->fields as $field => $params)
@@ -498,7 +502,16 @@
                                        if ($params['query'])
                                        {
                                                $table = $params['join'] ? 
$this->build_join_table_alias($field, $params) : $this->table_name;
-                                               $column = $params['join'] ? 
$params['join']['column'] : $field;
+
+                                               if 
(isset($params['multiple_join']) && $params['multiple_join'])
+                                               {
+                                                       $table_column = 
$params['multiple_join']['column'];
+                                               }
+                                               else
+                                               {
+                                                       $column = 
$params['join'] ? $params['join']['column'] : $field;
+                                                       $table_column = 
"{$table}.{$column}";
+                                               }
                                                if ($params['type'] == 'int')
                                                {
                                                        if (!(int)$query)
@@ -505,11 +518,11 @@
                                                        {
                                                                continue;
                                                        }
-                                                       $like_clauses[] = 
"{$table}.{$column} = " . (int)$query;//$this->db->db_addslashes($query);
+                                                       $like_clauses[] = 
"{$table_column} = " . (int)$query;//$this->db->db_addslashes($query);
                                                }
                                                else
                                                {
-                                                       $like_clauses[] = 
"{$table}.{$column} $this->like $like_pattern";
+                                                       $like_clauses[] = 
"{$table_column} $this->like $like_pattern";
                                                }
                                        }
                                }

Modified: branches/dev-syncromind-2/phpgwapi/inc/class.uicommon_jquery.inc.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/class.uicommon_jquery.inc.php        
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/class.uicommon_jquery.inc.php        
2017-05-13 14:15:15 UTC (rev 16738)
@@ -64,8 +64,6 @@
                                self::add_javascript('phpgwapi', $yui, 
'common.js');
                        }
 
-                       self::add_javascript('phpgwapi', "jquery", 'common.js');
-
                        $this->url_prefix = str_replace('_', '.', 
get_class($this));
 
                        $this->dateFormat = 
$GLOBALS['phpgw_info']['user']['preferences']['common']['dateformat'];
@@ -77,6 +75,7 @@
 
                        phpgwapi_jquery::load_widget('core');
                        phpgwapi_jquery::load_widget('contextMenu');
+                       self::add_javascript('phpgwapi', "jquery", 'common.js');
 
                        self::add_javascript('phpgwapi', 'DataTables', 
'media/js/jquery.dataTables.min.js');
                        self::add_javascript('phpgwapi', 'DataTables', 
'extensions/Responsive/js/dataTables.responsive.js');

Modified: 
branches/dev-syncromind-2/phpgwapi/inc/pdf/extensions/CezTableImage.php
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/pdf/extensions/CezTableImage.php     
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/pdf/extensions/CezTableImage.php     
2017-05-13 14:15:15 UTC (rev 16738)
@@ -40,7 +40,7 @@
        /**
         * @param Cezpdf $ezpdf current cezpdf object
         */
-       function __construct($p,$o = 'portrait',$t = 'none', $op = array()){
+       function __construct($p='a4',$o = 'portrait',$t = 'none', $op = 
array()){
                parent::__construct($p, $o,$t,$op);
         $this->allowedTags .= '|showimage:.*?';
        }

Modified: branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpc.inc
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpc.inc        
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpc.inc        
2017-05-13 14:15:15 UTC (rev 16738)
@@ -205,10 +205,10 @@
        // The encoding used internally by PHP.
        // String values received as xml will be converted to this, and php 
strings will be converted to xml
        // as if having been coded with this
-       $GLOBALS['xmlrpc_internalencoding']='ISO-8859-1';
+       $GLOBALS['xmlrpc_internalencoding']='ISO-8859-1';
 
        $GLOBALS['xmlrpcName']='XML-RPC for PHP';
-       $GLOBALS['xmlrpcVersion']='3.0.0';
+       $GLOBALS['xmlrpcVersion']='3.0.0';
 
        // let user errors start at 800
        $GLOBALS['xmlrpcerruser']=800;
@@ -225,7 +225,7 @@
 
        // set to TRUE to enable encoding of php NULL values to <EX:NIL/> 
instead of <NIL/>
        $GLOBALS['xmlrpc_null_apache_encoding']=false;
-    
$GLOBALS['xmlrpc_null_apache_encoding_ns']='http://ws.apache.org/xmlrpc/namespaces/extensions';
+    
$GLOBALS['xmlrpc_null_apache_encoding_ns']='http://ws.apache.org/xmlrpc/namespaces/extensions';
 
        // used to store state during parsing
        // quick explanation of components:
@@ -850,7 +850,7 @@
                * http://curl.haxx.se/docs/faq.html#7.3)
                */
                var $xmlrpc_curl_handle = null;
-               /// Whether to use persistent connections for http 1.1 and https
+               /// Whether to use persistent connections for http 1.1 and https
                var $keepalive = false;
                /// Charset encodings that can be decoded without problems by 
the client
                var $accepted_charset_encodings = array();
@@ -872,7 +872,7 @@
                * @param integer $port the port the server is listening on, 
defaults to 80 or 443 depending on protocol used
                * @param string $method the http protocol variant: defaults to 
'http', 'https' and 'http11' can be used if CURL is installed
                */
-               function xmlrpc_client($path, $server='', $port='', $method='')
+               function __construct($path, $server='', $port='', $method='')
                {
                        // allow user to specify all params in $path
                        if($server == '' and $port == '' and $method == '')
@@ -944,7 +944,7 @@
 
                /**
                * Enables/disables the echoing to screen of the xmlrpc 
responses received
-               * @param integer $in values 0, 1 and 2 are supported (2 = echo 
sent msg too, before received response)
+               * @param integer $in values 0, 1 and 2 are supported (2 = echo 
sent msg too, before received response)
                * @access public
                */
                function setDebug($in)
@@ -980,7 +980,7 @@
 
                /**
                * Add a CA certificate to verify server with (see man page about
-               * CURLOPT_CAINFO for more details)
+               * CURLOPT_CAINFO for more details)
                * @param string $cacert certificate file name (or dir holding 
certificates)
                * @param bool $is_dir set to true to indicate cacert is a dir. 
defaults to false
                * @access public
@@ -1062,9 +1062,9 @@
                        if ($compmethod == 'any')
                                $this->accepted_compression = array('gzip', 
'deflate');
                        else
-                               if ($compmethod == false )
-                                       $this->accepted_compression = array();
-                               else
+                               if ($compmethod == false )
+                                       $this->accepted_compression = array();
+                               else
                                $this->accepted_compression = 
array($compmethod);
                }
 
@@ -1112,7 +1112,7 @@
                /**
                * Directly set cURL options, for extra flexibility
                * It allows eg. to bind client to a specific IP interface / 
address
-               * @param array $options
+               * @param array $options
                */
                function SetCurlOptions( $options )
                {
@@ -1345,12 +1345,12 @@
                                $cookieheader = 'Cookie:' . $version . 
substr($cookieheader, 0, -1) . "\r\n";
                        }
 
-                       // omit port if 80
-                       $port = ($port == 80) ? '' : (':' . $port);
-
+                       // omit port if 80
+                       $port = ($port == 80) ? '' : (':' . $port);
+
                        $op= 'POST ' . $uri. " HTTP/1.0\r\n" .
                                'User-Agent: ' . $this->user_agent . "\r\n" .
-                               'Host: '. $server . $port . "\r\n" .
+                               'Host: '. $server . $port . "\r\n" .
                                $credentials .
                                $proxy_credentials .
                                $accepted_encoding .
@@ -1399,11 +1399,11 @@
                        }
                        else
                        {
-                               // reset errno and errstr on successful socket 
connection
+                               // reset errno and errstr on successful socket 
connection
                                $this->errstr = '';
                        }
                        // G. Giunta 2005/10/24: close socket before parsing.
-                       // should yield slightly better execution times, and 
make easier recursive calls (e.g. to follow http redirects)
+                       // should yield slightly better execution times, and 
make easier recursive calls (e.g. to follow http redirects)
                        $ipd='';
                        do
                        {
@@ -1621,13 +1621,13 @@
                                {
                                        curl_setopt($curl, 
CURLOPT_SSLKEYPASSWD, $keypass);
                                }
-
-                // Upgrade transparently to more stringent check for versions 
of php which do not support otherwise.
-                // Doing it in constructor would be cleaner; doing it here 
saves us a couple of function calls
-                if($this->verifyhost == 1 && $info = curl_version() && 
version_compare($info['version'], '7.28.1') >= 0)
-                {
-                    $this->verifyhost = 2;
-                }
+
+                // Upgrade transparently to more stringent check for versions 
of php which do not support otherwise.
+                // Doing it in constructor would be cleaner; doing it here 
saves us a couple of function calls
+                if($this->verifyhost == 1 && $info = curl_version() && 
version_compare($info['version'], '7.28.1') >= 0)
+                {
+                    $this->verifyhost = 2;
+                }
                                // whether to verify cert's common name (CN); 0 
for no, 1 to verify that it exists, and 2 to verify that it matches the 
hostname used
                                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 
$this->verifyhost);
                        }
@@ -1679,14 +1679,14 @@
                        {
                                print "<PRE>\n---CURL INFO---\n";
                                foreach(curl_getinfo($curl) as $name => $val)
-                               {
-                                       if (is_array($val))
-                                       {
-                                               $val = implode("\n", $val);
-                                       }
-                                       print $name . ': ' . htmlentities($val) 
. "\n";
-                               }
-
+                               {
+                                       if (is_array($val))
+                                       {
+                                               $val = implode("\n", $val);
+                                       }
+                                       print $name . ': ' . htmlentities($val) 
. "\n";
+                               }
+
                                print "---END---\n</PRE>";
                        }
 
@@ -1707,12 +1707,12 @@
                                        curl_close($curl);
                                }
                                $resp =& $msg->parseResponse($result, true, 
$this->return_type);
-                // if we got back a 302, we can not reuse the curl handle for 
later calls
-                if($resp->faultCode() == $GLOBALS['xmlrpcerr']['http_error'] 
&& $keepalive)
-                {
-                    curl_close($curl);
-                    $this->xmlrpc_curl_handle = null;
-                }
+                // if we got back a 302, we can not reuse the curl handle for 
later calls
+                if($resp->faultCode() == $GLOBALS['xmlrpcerr']['http_error'] 
&& $keepalive)
+                {
+                    curl_close($curl);
+                    $this->xmlrpc_curl_handle = null;
+                }
                        }
                        return $resp;
                }
@@ -1735,7 +1735,7 @@
                * @param array $msgs an array of xmlrpcmsg objects
                * @param integer $timeout connection timeout (in seconds)
                * @param string $method the http protocol variant to be used
-               * @param boolean fallback When true, upon receiving an error 
during multicall, multiple single calls will be attempted
+               * @param boolean fallback When true, upon receiving an error 
during multicall, multiple single calls will be attempted
                * @return array
                * @access public
                */
@@ -1968,7 +1968,7 @@
                * NB: as of now we do not do it, since it might be either an 
xmlrpcval or a plain
                * php val, or a complete xml chunk, depending on usage of 
xmlrpc_client::send() inside which creator is called...
                */
-               function xmlrpcresp($val, $fcode = 0, $fstr = '', $valtyp='')
+               function __construct($val, $fcode = 0, $fstr = '', $valtyp='')
                {
                        if($fcode != 0)
                        {
@@ -2042,7 +2042,7 @@
                * with attributes being e.g. 'expires', 'path', domain'.
                * NB: cookies sent as 'expired' by the server (i.e. with an 
expiry date in the past)
                * are still present in the array. It is up to the user-defined 
code to decide
-               * how to use the received cookies, and whether they have to be 
sent back with the next
+               * how to use the received cookies, and whether they have to be 
sent back with the next
                * request to the server (using xmlrpc_client::setCookie) or not
                * @return array array of cookies received from the server
                * @access public
@@ -2064,14 +2064,14 @@
                                $this->content_type = 'text/xml; charset=' . 
$charset_encoding;
                        else
                                $this->content_type = 'text/xml';
-                       if ($GLOBALS['xmlrpc_null_apache_encoding'])
-                       {
-                               $result = "<methodResponse 
xmlns:ex=\"".$GLOBALS['xmlrpc_null_apache_encoding_ns']."\">\n";
-                       }
-                       else
-                       {
+                       if ($GLOBALS['xmlrpc_null_apache_encoding'])
+                       {
+                               $result = "<methodResponse 
xmlns:ex=\"".$GLOBALS['xmlrpc_null_apache_encoding_ns']."\">\n";
+                       }
+                       else
+                       {
                        $result = "<methodResponse>\n";
-                       }
+                       }
                        if($this->errno)
                        {
                                // G. Giunta 2005/2/13: let non-ASCII response 
messages be tolerated by clients
@@ -2121,9 +2121,9 @@
 
                /**
                * @param string $meth the name of the method to invoke
-               * @param array $pars array of parameters to be passed to the 
method (xmlrpcval objects)
+               * @param array $pars array of parameters to be passed to the 
method (xmlrpcval objects)
                */
-               function xmlrpcmsg($meth, $pars=0)
+               function __construct($meth, $pars=0)
                {
                        $this->methodname=$meth;
                        if(is_array($pars) && count($pars)>0)
@@ -2205,7 +2205,7 @@
 
                /**
                * Returns xml representation of the message. XML prologue 
included
-               * @param string $charset_encoding
+               * @param string $charset_encoding
                * @return string the xml representation of the message, xml 
prologue included
                * @access public
                */
@@ -2259,7 +2259,7 @@
                *      infinite loop in that case, because we cannot trust the 
caller
                *      to give us a valid pointer to an open file...
                * @access public
-               * @param resource $fp stream pointer
+               * @param resource $fp stream pointer
                * @return xmlrpcresp
                * @todo add 2nd & 3rd param to be passed to ParseResponse() ???
                */
@@ -2748,7 +2748,7 @@
                * @param mixed $val
                * @param string $type any valid xmlrpc type name (lowercase). 
If null, 'string' is assumed
                */
-               function xmlrpcval($val=-1, $type='')
+               function __construct($val=-1, $type='')
                {
                        /// @todo: optimization creep - do not call addXX, do 
it all inline.
                        /// downside: booleans will not be coerced anymore
@@ -3089,7 +3089,7 @@
                }
 
                /**
-               * Checks whether a struct member with a given name is present.
+               * Checks whether a struct member with a given name is present.
                * Works only on xmlrpcvals of type struct.
                * @param string $m the name of the struct member to be looked up
                * @return boolean
@@ -3688,10 +3688,10 @@
        * we SHOULD assume it is strictly US-ASCII. But we try to be more 
tolerant of unconforming (legacy?) clients/servers,
        * which will be most probably using UTF-8 anyway...
        *
-       * @param string $httpheader the http Content-type header
+       * @param string $httpheader the http Content-type header
        * @param string $xmlchunk xml content buffer
        * @param string $encoding_prefs comma separated list of character 
encodings to be used as default (when mb extension is enabled)
-       * @return string
+       * @return string
        *
        * @todo explore usage of mb_http_input(): does it detect http headers + 
post data? if so, use it instead of hand-detection!!!
        */
@@ -3784,7 +3784,7 @@
        * if it is a valid subset of any encoding in the list
        * @param string $encoding charset to be tested
        * @param mixed $validlist comma separated list of valid charsets (or 
array of charsets)
-       * @return bool
+       * @return bool
        */
        function is_valid_charset($encoding, $validlist)
        {
@@ -3807,6 +3807,4 @@
                                                return true;
                                return false;
                }
-       }
-
-?>
+       }
\ No newline at end of file

Modified: branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpc_wrappers.inc
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpc_wrappers.inc       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpc_wrappers.inc       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -4,7 +4,7 @@
  * Generate stubs to transparently access xmlrpc methods as php functions and 
viceversa
  *
  * @author Gaetano Giunta
- * @copyright (C) 2006-2014 G. Giunta
+ * @copyright (C) 2006-2014 G. Giunta
  * @license code licensed under the BSD License: 
http://phpxmlrpc.sourceforge.net/license.txt
  *
  * @todo separate introspection from code generation for func-2-method wrapping
@@ -226,7 +226,7 @@
                                error_log('XML-RPC: method to be wrapped is the 
constructor: '.$plainfuncname);
                                return false;
                        }
-                if($func->isDestructor())
+                if($func->isDestructor())
                        {
                                error_log('XML-RPC: method to be wrapped is the 
destructor: '.$plainfuncname);
                                return false;
@@ -515,12 +515,12 @@
        * Given an xmlrpc client and a method name, register a php wrapper 
function
        * that will call it and return results using native php types for both
        * params and results. The generated php function will return an 
xmlrpcresp
-       * object for failed xmlrpc calls
+       * object for failed xmlrpc calls
        *
        * Known limitations:
        * - server must support system.methodsignature for the wanted xmlrpc 
method
        * - for methods that expose many signatures, only one can be picked (we
-       *   could in principle check if signatures differ only by number of 
params
+       *   could in principle check if signatures differ only by number of 
params
        *   and not by type, but it would be more complication than we can 
spare time)
        * - nested xmlrpc params: the caller of the generated php function has 
to
        *   encode on its own the params passed to the php function if these 
are structs
@@ -536,11 +536,11 @@
        *
        * @param xmlrpc_client $client     an xmlrpc client set up correctly to 
communicate with target server
        * @param string        $methodname the xmlrpc method to be mapped to a 
php function
-       * @param array         $extra_options array of options that specify 
conversion details. valid options include
+       * @param array         $extra_options array of options that specify 
conversion details. valid options include
        *        integer       signum      the index of the method signature to 
use in mapping (if method exposes many sigs)
        *        integer       timeout     timeout (in secs) to be used when 
executing function/calling remote method
        *        string        protocol    'http' (default), 'http11' or 'https'
-       *        string        new_function_name the name of php function to 
create. If unspecified, lib will pick an appropriate name
+       *        string        new_function_name the name of php function to 
create. If unspecified, lib will pick an appropriate name
        *        string        return_source if true return php code w. 
function definition instead fo function name
        *        bool          encode_php_objs let php objects be sent to 
server using the 'improved' xmlrpc notation, so server can deserialize them as 
php objects
        *        bool          decode_php_objs --- WARNING !!! possible 
security hazard. only use it with trusted servers ---
@@ -570,7 +570,7 @@
 
                $encode_php_objects = isset($extra_options['encode_php_objs']) 
? (bool)$extra_options['encode_php_objs'] : false;
                $decode_php_objects = isset($extra_options['decode_php_objs']) 
? (bool)$extra_options['decode_php_objs'] : false;
-               // it seems like the meaning of 'simple_client_copy' here is 
swapped wrt client_copy_mode later on...
+               // it seems like the meaning of 'simple_client_copy' here is 
swapped wrt client_copy_mode later on...
                $simple_client_copy = 
isset($extra_options['simple_client_copy']) ? 
(int)($extra_options['simple_client_copy']) : 0;
                $buildit = isset($extra_options['return_source']) ? 
!($extra_options['return_source']) : true;
                $prefix = isset($extra_options['prefix']) ? 
$extra_options['prefix'] : 'xmlrpc';
@@ -930,5 +930,4 @@
                $code .= "\$client->return_type = '{$prefix}vals';\n";
                //$code .= "\$client->setDebug(\$debug);\n";
                return $code;
-       }
-?>
\ No newline at end of file
+       }
\ No newline at end of file

Modified: branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpcs.inc
===================================================================
--- branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpcs.inc       
2017-05-13 04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/inc/xmlrpc/lib/xmlrpcs.inc       
2017-05-13 14:15:15 UTC (rev 16738)
@@ -420,7 +420,7 @@
        /**
        * Add a string to the debug info that can be later seralized by the 
server
        * as part of the response message.
-       * Note that for best compatibility, the debug string should be encoded 
using
+       * Note that for best compatibility, the debug string should be encoded 
using
        * the $GLOBALS['xmlrpc_internalencoding'] character set.
        * @param string $m
        * @access public
@@ -450,7 +450,7 @@
                * @see php_xmlrpc_encode for a list of values
                */
                var $phpvals_encoding_options = array( 'auto_dates' );
-               /// controls whether the server is going to echo debugging 
messages back to the client as comments in response body. valid values: 0,1,2,3
+               /// controls whether the server is going to echo debugging 
messages back to the client as comments in response body. valid values: 0,1,2,3
                var $debug = 1;
                /**
                * Controls behaviour of server when invoked user function 
throws an exception:
@@ -494,10 +494,10 @@
                var $user_data = null;
 
                /**
-               * @param array $dispmap the dispatch map with definition of 
exposed services
-               * @param boolean $servicenow set to false to prevent the server 
from running upon construction
+               * @param array $dispmap the dispatch map with definition of 
exposed services
+               * @param boolean $servicenow set to false to prevent the server 
from running upon construction
                */
-               function xmlrpc_server($dispMap=null, $serviceNow=true)
+               function __construct($dispMap=null, $serviceNow=true)
                {
                        // if ZLIB is enabled, let the server by default accept 
compressed requests,
                        // and compress responses sent to clients that support 
them
@@ -540,7 +540,7 @@
                * with the standard processing of the php function exposed as 
method. In
                * particular, triggering an USER_ERROR level error will not 
halt script
                * execution anymore, but just end up logged in the xmlrpc 
response)
-               * Note that info added at level 2 and 3 will be base64 encoded
+               * Note that info added at level 2 and 3 will be base64 encoded
                * @access public
                */
                function setDebug($in)
@@ -711,7 +711,7 @@
                * Verify type and number of parameters received against a list 
of known signatures
                * @param array $in array of either xmlrpcval objects or xmlrpc 
type definitions
                * @param array $sig array of known signatures to match against
-               * @return array
+               * @return array
                * @access private
                */
                function verifySignature($in, $sig)
@@ -777,7 +777,7 @@
 
                /**
                * Parse http headers received along with xmlrpc request. If 
needed, inflate request
-               * @return mixed null on success or an xmlrpcresp
+               * @return mixed null on success or an xmlrpcresp
                * @access private
                */
                function parseRequestHeaders(&$data, &$req_encoding, 
&$resp_encoding, &$resp_compression)
@@ -940,7 +940,7 @@
                                }
                                /// @BUG this will fail on PHP 5 if charset is 
not specified in the xml prologue,
                                // the encoding is not UTF8 and there are 
non-ascii chars in the text...
-                               /// @todo use an empty string for php 5 ???
+                               /// @todo use an empty string for php 5 ???
                                $parser = xml_parser_create($req_encoding);
                        }
                        else
@@ -1202,7 +1202,7 @@
 
                /**
                * add a string to the 'internal debug message' (separate from 
'user debug message')
-               * @param string $string
+               * @param string $string
                * @access private
                */
                function debugmsg($string)
@@ -1234,5 +1234,4 @@
                        $r=new xmlrpcresp(new xmlrpcval( "'Aha said I: '" . 
$GLOBALS['HTTP_RAW_POST_DATA'], 'string'));
                        print $r->serialize();
                }
-       }
-?>
+       }
\ No newline at end of file

Modified: branches/dev-syncromind-2/phpgwapi/js/jquery/common.js
===================================================================
--- branches/dev-syncromind-2/phpgwapi/js/jquery/common.js      2017-05-13 
04:35:18 UTC (rev 16737)
+++ branches/dev-syncromind-2/phpgwapi/js/jquery/common.js      2017-05-13 
14:15:15 UTC (rev 16738)
@@ -489,7 +489,7 @@
                        }
                        try
                        {
-                               window['local_DrawCallback' + num](oTable);
+                               window['local_DrawCallback' + num](container);
                        }
                        catch (err)
                        {
@@ -758,9 +758,23 @@
        var oArgs = {lightbox: 1};
        var strURL = phpGWLink('login.php', oArgs);
        var width =  $(window).width() * 0.80;
-       TINY.box.show({iframe: strURL, boxid: 'frameless', width: width, 
height: 400, fixed: false, maskid: 'darkmask', maskopacity: 40, mask: true, 
animate: false, close: false, closejs: false});
+       TINY.box.show({
+               iframe: strURL,
+               boxid: 'frameless',
+               width: width,
+               height: 400,
+               fixed: false,
+               maskid: 'darkmask',
+               maskopacity: 40,
+               mask: true,
+               animate: false,
+               close: false,
+               closejs: false
+       });
 };
 
+
+
 JqueryPortico.showlightbox_history = function (sUrl)
 {
        TINY.box.show({iframe: sUrl, boxid: 'frameless', width: 650, height: 
400, fixed: false, maskid: 'darkmask', maskopacity: 40, mask: true, animate: 
true, close: true});

Copied: branches/dev-syncromind-2/phpgwapi/js/jquery/js/jquery-3.2.1.min.js 
(from rev 16737, trunk/phpgwapi/js/jquery/js/jquery-3.2.1.min.js)
===================================================================
--- branches/dev-syncromind-2/phpgwapi/js/jquery/js/jquery-3.2.1.min.js         
                (rev 0)
+++ branches/dev-syncromind-2/phpgwapi/js/jquery/js/jquery-3.2.1.min.js 
2017-05-13 14:15:15 UTC (rev 16738)
@@ -0,0 +1,4 @@
+/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | 
jquery.org/license */

@@ Diff output truncated at 153600 characters. @@



reply via email to

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