<feed xmlns='http://www.w3.org/2005/Atom'>
<title>contact/templates, branch master</title>
<subtitle>Bitweaver contact package repository
</subtitle>
<id>https://git.rdm1.uk/contact/.git/atom?h=master</id>
<link rel='self' href='https://git.rdm1.uk/contact/.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/'/>
<updated>2026-06-19T13:11:28Z</updated>
<entry>
<title>Move linked user_id field into Liberty Extensions tab, first position</title>
<updated>2026-06-19T13:11:28Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-19T13:11:28Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=0dc95235f38a2f20fe8334ec7c28beb19cb01042'/>
<id>urn:sha1:0dc95235f38a2f20fe8334ec7c28beb19cb01042</id>
<content type='text'>
Removed from the legacy edit_contact.tpl; placed at the top of the
Liberty Extensions tab in edit.tpl, gated on p_contact_admin, using
the same plain form-group style as surrounding fields.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Map contact persons to registered users via contact.role_id</title>
<updated>2026-06-19T13:05:07Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-19T13:05:07Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=5d3e672dd7f35c348a98fd149c02c5c9d79cb520'/>
<id>urn:sha1:5d3e672dd7f35c348a98fd149c02c5c9d79cb520</id>
<content type='text'>
contact.role_id stores the user_id of the linked registered user (NULL = no
account). load() joins users_users on role_id to expose linked_user_login and
linked_user_name. verify() accepts user_id from the edit form and writes it to
contact_store['role_id']. getList() now filters by user_id key (was role_id).
Edit form shows the user_id field to admins with current login shown inline;
display template shows the linked user when set.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Introduce ContactPerson and ContactBusiness subclasses</title>
<updated>2026-06-11T18:26:25Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-11T18:26:25Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=64aae1e41d9288a6d9709781af29b06fe6adb5ca'/>
<id>urn:sha1:64aae1e41d9288a6d9709781af29b06fe6adb5ca</id>
<content type='text'>
Splits the Contact class into ContactPerson (content_type_guid='contactperson')
and ContactBusiness (content_type_guid='contactbusiness'), each using 'contact'
as the shared package-level xref schema. Replaces the $isPerson/$00 xref hack
with proper class identity via instanceof.

- ContactPerson.php, ContactBusiness.php: new subclasses
- Contact.php: loadXrefTypeList() reads type tags directly from liberty_xref;
  getAvailableTypeItems() for edit form (schema-driven with pre-upgrade fallback);
  getDisplayUrl() now points to display_contact.php
- Type item codes: P01/P02 (person), B01-B04 (business, B01=Service new)
- list_people.php, list_businesses.php: separate list pages per type
- list_contacts.php: combined display-layer merge of both types
- 5.0.3.php: upgrade script migrating existing data to new content types and codes
- Templates: isPerson flag from instanceof; horizontal type checkboxes; list.tpl
  accepts $listTitle; menu adds People/Businesses entries

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Remove duplicate ipackage attributes from biticon calls</title>
<updated>2026-06-07T15:51:54Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-07T15:51:54Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=27c615a0a26edb985543e520587e3043d91489f6'/>
<id>urn:sha1:27c615a0a26edb985543e520587e3043d91489f6</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>display_contact: migrate to loadXrefInfo/gXrefInfo path</title>
<updated>2026-06-06T14:55:45Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-06T14:55:45Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=4425c6b4acd016085c537631c4738ca2fca90eaf'/>
<id>urn:sha1:4425c6b4acd016085c537631c4738ca2fca90eaf</id>
<content type='text'>
display_contact.php: replace getXrefGroupList() with loadXrefInfo()
and assign gXrefInfo to Smarty.
display_contact.tpl: replace old $source loop with xrefGroup foreach.
view_xref_contact_group.tpl: remove fixed column widths.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>xref: remove dead list_xref.tpl override</title>
<updated>2026-06-06T14:04:04Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-06T14:04:04Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=0b0e5796f15d4a9c74651bd6fa06072768153964'/>
<id>urn:sha1:0b0e5796f15d4a9c74651bd6fa06072768153964</id>
<content type='text'>
This template was unreachable — getXrefListTemplate() resolves
only to liberty/list_xref.tpl as the generic fallback, never
to contact/list_xref.tpl.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>list templates: remove unimplemented remove_contact bulk action option</title>
<updated>2026-06-06T10:24:54Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-06T10:24:54Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=bb332c35350521fbbc033329a8c75a6bd7c01684'/>
<id>urn:sha1:bb332c35350521fbbc033329a8c75a6bd7c01684</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>edit.php: add expunge=1 handler; contact_date_bar: use edit.php?expunge=1</title>
<updated>2026-06-06T10:22:49Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-06T10:22:49Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=2efbb78b7ceff6c369c2bee68c2a09270ce0fcde'/>
<id>urn:sha1:2efbb78b7ceff6c369c2bee68c2a09270ce0fcde</id>
<content type='text'>
Replaces broken remove_contact.php link with edit.php?expunge=1 pattern,
consistent with other edit pages.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>xref item templates: replace $source eq/ne 'history' with $isHistory</title>
<updated>2026-06-06T09:49:52Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-06T09:49:52Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=d94ebc448c24e8a83c7b6abd6180be4fe6898a80'/>
<id>urn:sha1:d94ebc448c24e8a83c7b6abd6180be4fe6898a80</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>address/phone item templates: replace $source with $isHistory</title>
<updated>2026-06-06T09:42:26Z</updated>
<author>
<name>Lester Caine</name>
<email>lester@lsces.co.uk</email>
</author>
<published>2026-06-06T09:42:26Z</published>
<link rel='alternate' type='text/html' href='https://git.rdm1.uk/contact/.git/commit/?id=5ac3b6dbd4b2ee1280b18b26b85b552504b09827'/>
<id>urn:sha1:5ac3b6dbd4b2ee1280b18b26b85b552504b09827</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
