From 3d94c3dfe203edeb25b42466733672aff9fca89f Mon Sep 17 00:00:00 2001 From: Lester Caine Date: Fri, 29 May 2026 13:57:26 +0100 Subject: BOM parts list support: xref template dispatch and LibertyXref fixes - LibertyContent: add getXrefListTemplate(), getXrefRecordTemplate(), getXrefEditTemplate() for package-aware template dispatch with liberty fallback - LibertyXref: explicit xorder passthrough in verify(); fix start_date/end_date to use time() instead of mDb->NOW() so BitDate::date() receives a timestamp - add_xref.php, edit_xref.php: redirect to getEditUrl() after save/cancel - list_xref.tpl: use getXrefRecordTemplate() instead of hardcoded liberty path Co-Authored-By: Claude Sonnet 4.6 --- add_xref.php | 5 +++-- edit_xref.php | 9 +++++---- includes/classes/LibertyContent.php | 37 +++++++++++++++++++++++++++++++++++++ includes/classes/LibertyXref.php | 7 ++++--- templates/list_xref.tpl | 2 +- 5 files changed, 50 insertions(+), 10 deletions(-) diff --git a/add_xref.php b/add_xref.php index 89c7908..fcf0ffc 100644 --- a/add_xref.php +++ b/add_xref.php @@ -6,6 +6,7 @@ namespace Bitweaver\Liberty; + require_once '../kernel/includes/setup_inc.php'; global $gBitSystem, $gBitSmarty, $gBitUser, $gContent; @@ -23,13 +24,13 @@ if( !$gContent || !$gContent->isValid() ) { $gContent->verifyUpdatePermission(); if( !empty( $_REQUEST['fCancel'] ) ) { - header( 'Location: '.$gContent->getDisplayUrl() ); + header( 'Location: '.$gContent->getEditUrl() ); die; } if( !empty( $_REQUEST['fAddXref'] ) ) { if( $gContent->storeXref( $_REQUEST ) ) { - header( 'Location: '.$gContent->getDisplayUrl() ); + header( 'Location: '.$gContent->getEditUrl() ); die; } } diff --git a/edit_xref.php b/edit_xref.php index 2c14384..b58044a 100644 --- a/edit_xref.php +++ b/edit_xref.php @@ -25,14 +25,14 @@ if( !empty( $_REQUEST['xref_id'] ) ) { } if( !empty( $_REQUEST['fCancel'] ) ) { - header( 'Location: '.$gContent->getDisplayUrl() ); + header( 'Location: '.$gContent->getEditUrl() ); die; } if( !empty( $_REQUEST['fSaveXref'] ) ) { $gContent->verifyUpdatePermission(); if( $gContent->storeXref( $_REQUEST ) ) { - header( 'Location: '.$gContent->getDisplayUrl() ); + header( 'Location: '.$gContent->getEditUrl() ); die; } $xrefInfo = $_REQUEST; @@ -40,7 +40,7 @@ if( !empty( $_REQUEST['fSaveXref'] ) ) { } elseif( isset( $_REQUEST['expunge'] ) ) { $gContent->verifyExpungePermission(); if( $gContent->stepXref( $_REQUEST ) ) { - header( 'Location: '.$gContent->getDisplayUrl() ); + header( 'Location: '.$gContent->getEditUrl() ); die; } $xrefInfo = $gContent->mInfo['xref_store']['data'] ?? []; @@ -53,4 +53,5 @@ $gBitSmarty->assign( 'gContent', $gContent ); $gBitSmarty->assign( 'xrefInfo', $xrefInfo ); $gBitSmarty->assign( 'errors', $gContent->mErrors ); -$gBitSystem->display( 'bitpackage:liberty/edit_xref.tpl', 'Edit Detail', [ 'display_mode' => 'edit' ] ); +$xrefTemplate = $gContent->mInfo['xref_store']['data']['template'] ?? 'text'; +$gBitSystem->display( $gContent->getXrefEditTemplate( $xrefTemplate ), 'Edit Detail', [ 'display_mode' => 'edit' ] ); diff --git a/includes/classes/LibertyContent.php b/includes/classes/LibertyContent.php index 99659e0..9f79e45 100755 --- a/includes/classes/LibertyContent.php +++ b/includes/classes/LibertyContent.php @@ -2155,6 +2155,43 @@ class LibertyContent extends LibertyBase implements BitCacheable { * @param number $pContentId a valid content id * @param array $pMixed a hash of params to add to the url */ + public function getXrefListTemplate( ?string $pTemplate = null ): string { + if( $pTemplate ) { + $package = $this->mType['handler_package'] ?? 'liberty'; + $pkgConst = strtoupper( $package ).'_PKG_PATH'; + if( defined( $pkgConst ) && file_exists( constant( $pkgConst ).'templates/list_xref_'.$pTemplate.'.tpl' ) ) { + return 'bitpackage:'.$package.'/list_xref_'.$pTemplate.'.tpl'; + } + } + return 'bitpackage:liberty/list_xref.tpl'; + } + + public function getXrefRecordTemplate( ?string $pTemplate = null ): string { + $pTemplate = $pTemplate ?: 'text'; + $package = $this->mType['handler_package'] ?? 'liberty'; + $pkgConst = strtoupper( $package ).'_PKG_PATH'; + if( defined( $pkgConst ) ) { + $pkgTpl = constant( $pkgConst ).'templates/view_xref_'.$pTemplate.'_record.tpl'; + if( file_exists( $pkgTpl ) ) { + return 'bitpackage:'.$package.'/view_xref_'.$pTemplate.'_record.tpl'; + } + } + return 'bitpackage:liberty/view_xref_'.$pTemplate.'_record.tpl'; + } + + public function getXrefEditTemplate( ?string $pTemplate = null ): string { + $pTemplate = $pTemplate ?: 'text'; + $package = $this->mType['handler_package'] ?? 'liberty'; + $pkgConst = strtoupper( $package ).'_PKG_PATH'; + if( defined( $pkgConst ) ) { + $pkgTpl = constant( $pkgConst ).'templates/edit_xref_'.$pTemplate.'.tpl'; + if( file_exists( $pkgTpl ) ) { + return 'bitpackage:'.$package.'/edit_xref_'.$pTemplate.'.tpl'; + } + } + return 'bitpackage:liberty/edit_xref.tpl'; + } + public function getEditUrl( $pContentId = null, $pMixed = null ){ global $gLibertySystem; $package = $gLibertySystem->mContentTypes[$this->mType['content_type_guid']]['handler_package']; diff --git a/includes/classes/LibertyXref.php b/includes/classes/LibertyXref.php index 5327351..2473507 100644 --- a/includes/classes/LibertyXref.php +++ b/includes/classes/LibertyXref.php @@ -92,7 +92,7 @@ class LibertyXref extends LibertyBase { $pParamHash['xref_store']['item'] = $this->mItem; $pParamHash['xref_store']['xorder'] = $this->mInfo['data']['xorder'] + 1; $pParamHash['xref_store']['content_id'] = $this->mContentId; - $pParamHash['start_date'] = $this->mDb->NOW(); + $pParamHash['start_date'] = time(); $pParamHash['ignore_end_date'] = 'on'; $pParamHash['xref_store']['xref'] = 0; $pParamHash['xref_store']['xkey'] = ''; @@ -100,6 +100,7 @@ class LibertyXref extends LibertyBase { $pParamHash['xref_store']['data'] = ''; } + if( isset( $pParamHash['xorder'] ) ) { $pParamHash['xref_store']['xorder'] = (int)$pParamHash['xorder']; } if( isset( $pParamHash['xref'] ) ) { $pParamHash['xref_store']['xref'] = $pParamHash['xref']; } if( isset( $pParamHash['xkey'] ) ) { $pParamHash['xref_store']['xkey'] = $pParamHash['xkey']; } if( isset( $pParamHash['xkey_ext'] ) ) { $pParamHash['xref_store']['xkey_ext'] = $pParamHash['xkey_ext']; } @@ -163,13 +164,13 @@ class LibertyXref extends LibertyBase { if( isset( $pParamHash["expunge"] ) ) { switch( $pParamHash["expunge"] ) { case 2: - $pParamHash['end_date'] = $this->mDb->NOW(); + $pParamHash['end_date'] = time(); $this->store( $pParamHash ); unset( $pParamHash['xref_id'] ); $pParamHash['fStepXref'] = 1; break; case 1: - $pParamHash['end_date'] = $this->mDb->NOW(); + $pParamHash['end_date'] = time(); break; default: $pParamHash['ignore_end_date'] = 'on'; diff --git a/templates/list_xref.tpl b/templates/list_xref.tpl index 9ac5a3e..a670111 100644 --- a/templates/list_xref.tpl +++ b/templates/list_xref.tpl @@ -22,7 +22,7 @@ {section name=xref loop=$gContent->mInfo.$source} - {include file="bitpackage:liberty/view_xref_`$gContent->mInfo.$source[xref].template`_record.tpl"} + {include file=$gContent->getXrefRecordTemplate($gContent->mInfo.$source[xref].template)} {sectionelse} -- cgit v1.3