summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLester Caine <lester@lsces.co.uk>2026-06-06 10:15:47 +0100
committerLester Caine <lester@lsces.co.uk>2026-06-06 10:15:47 +0100
commitb2ae92f41dc18de0a212e579ee4b1e3362e5a4a6 (patch)
treecb36db6525c42c4227f7fcc386843db1824697f3
parentccb6c9dfdcee8d10fe845b08cea9f76fd3530a70 (diff)
downloadstock-b2ae92f41dc18de0a212e579ee4b1e3362e5a4a6.tar.gz
stock-b2ae92f41dc18de0a212e579ee4b1e3362e5a4a6.tar.bz2
stock-b2ae92f41dc18de0a212e579ee4b1e3362e5a4a6.zip
Refactor xref display to LibertyXrefGroup path throughout
- StockBase/StockAssembly/StockMovement: add loadXrefInfo() overrides to enrich supplier group with contact titles and BOM group with component titles, descriptions and pack sizes - display_stock_assembly_inc, view/edit_component, view/edit_assembly, view_movement: replace getXrefGroupList() with loadXrefInfo() + assign gXrefInfo; edit pages pass allow_edit=true - All view/edit templates: switch {section} over stockXxx_types arrays to {foreach $gXrefInfo->mGroups as $xrefGroup} object path - BOM and supplier group templates rewritten: $xrefGroup object, column widths, class="table", conditional colspan - All BOM/supplier item templates: $gContent->mInfo.$source[xref].x -> $xrefInfo.x; $source ne 'history' -> $isHistory - Dead code removed: list_xref_stock.tpl, view_xref_pck_item.tpl Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
-rwxr-xr-xedit_assembly.php3
-rwxr-xr-xedit_component.php3
-rwxr-xr-xincludes/classes/StockAssembly.php26
-rwxr-xr-xincludes/classes/StockBase.php19
-rw-r--r--includes/classes/StockMovement.php20
-rwxr-xr-xincludes/display_stock_assembly_inc.php3
-rwxr-xr-xtemplates/edit_assembly.tpl15
-rwxr-xr-xtemplates/edit_component.tpl15
-rw-r--r--templates/list_xref_stock.tpl56
-rw-r--r--templates/stockassembly/view_xref_bom_group.tpl32
-rw-r--r--templates/stockassembly/view_xref_bom_item.tpl24
-rw-r--r--templates/stockassembly/view_xref_bompck_item.tpl24
-rw-r--r--templates/stockcomponent/view_xref_pck_item.tpl26
-rw-r--r--templates/stockcomponent/view_xref_sup_group.tpl33
-rw-r--r--templates/stockcomponent/view_xref_sup_item.tpl26
-rw-r--r--templates/stockmovement/view_xref_bom_group.tpl34
-rw-r--r--templates/stockmovement/view_xref_bom_item.tpl24
-rw-r--r--templates/stockmovement/view_xref_bompck_item.tpl24
-rwxr-xr-xtemplates/view_assembly.tpl12
-rwxr-xr-xtemplates/view_component.tpl12
-rw-r--r--templates/view_movement.tpl13
-rwxr-xr-xview_component.php3
-rw-r--r--view_movement.php3
23 files changed, 217 insertions, 233 deletions
diff --git a/edit_assembly.php b/edit_assembly.php
index 22e5012..d4a59fc 100755
--- a/edit_assembly.php
+++ b/edit_assembly.php
@@ -162,7 +162,8 @@ if( $gContent->isValid() ) {
$gBitSmarty->assign( 'sortMode', $sortMode );
}
-$gContent->mInfo['stockassembly_types'] = $gContent->getXrefGroupList();
+$gContent->loadXrefInfo();
+$gBitSmarty->assign( 'gXrefInfo', $gContent->mXrefInfo );
$gContent->invokeServices( 'content_edit_function' );
diff --git a/edit_component.php b/edit_component.php
index 92a48d7..f75be10 100755
--- a/edit_component.php
+++ b/edit_component.php
@@ -78,7 +78,8 @@ if( !$gContent->isValid() && !empty( $_REQUEST['title'] ) ) {
$gContent->mInfo['title'] = trim( $_REQUEST['title'] );
}
-$gContent->mInfo['stockcomponent_types'] = $gContent->getXrefGroupList();
+$gContent->loadXrefInfo();
+$gBitSmarty->assign( 'gXrefInfo', $gContent->mXrefInfo );
$gContent->invokeServices( 'content_edit_function' );
diff --git a/includes/classes/StockAssembly.php b/includes/classes/StockAssembly.php
index 762c89b..c8b2367 100755
--- a/includes/classes/StockAssembly.php
+++ b/includes/classes/StockAssembly.php
@@ -88,6 +88,32 @@ class StockAssembly extends StockBase {
}
}
+ public function loadXrefInfo(): void {
+ parent::loadXrefInfo();
+ if( empty( $this->mXrefInfo ) ) return;
+ $bomGroup = $this->mXrefInfo->mGroups['quantity'] ?? null;
+ if( !$bomGroup || empty( $bomGroup->mXrefs ) ) return;
+ usort( $bomGroup->mXrefs, fn($a,$b) => ( $a['xorder'] <=> $b['xorder'] ) ?: strcmp( $a['item'], $b['item'] ) );
+ $componentIds = array_values( array_unique( array_filter( array_column( $bomGroup->mXrefs, 'xref' ) ) ) );
+ if( !$componentIds ) return;
+ $components = $this->mDb->getAssoc(
+ "SELECT lc.`content_id`, lc.`title`, lc.`data`, pck.`xkey` AS `pack_size`, pck.`xkey_ext` AS `pack_size_ext`
+ FROM `".BIT_DB_PREFIX."liberty_content` lc
+ LEFT JOIN `".BIT_DB_PREFIX."liberty_xref` pck ON pck.`content_id` = lc.`content_id` AND pck.`item` = 'PCK'
+ WHERE lc.`content_id` IN (".implode( ',', array_fill( 0, count( $componentIds ), '?' ) ).")",
+ $componentIds
+ );
+ foreach( $bomGroup->mXrefs as &$row ) {
+ if( !empty( $row['xref'] ) && isset( $components[$row['xref']] ) ) {
+ $row['xref_title'] = $components[$row['xref']]['title'];
+ $row['xref_data'] = $components[$row['xref']]['data'];
+ $row['pack_size'] = $components[$row['xref']]['pack_size'];
+ $row['pack_size_ext'] = $components[$row['xref']]['pack_size_ext'];
+ }
+ }
+ unset( $row );
+ }
+
public function loadXrefList(): void {
parent::loadXrefList();
if( !empty( $this->mInfo['quantity'] ) ) {
diff --git a/includes/classes/StockBase.php b/includes/classes/StockBase.php
index 6f90752..1de52a7 100755
--- a/includes/classes/StockBase.php
+++ b/includes/classes/StockBase.php
@@ -55,6 +55,25 @@ abstract class StockBase extends LibertyContent
}
}
+ public function loadXrefInfo(): void {
+ parent::loadXrefInfo();
+ if( empty( $this->mXrefInfo ) ) return;
+ $supplierGroup = $this->mXrefInfo->mGroups['supplier'] ?? null;
+ if( !$supplierGroup || empty( $supplierGroup->mXrefs ) ) return;
+ $contactIds = array_values( array_unique( array_filter( array_column( $supplierGroup->mXrefs, 'xref' ) ) ) );
+ if( !$contactIds ) return;
+ $contacts = $this->mDb->getAssoc(
+ "SELECT lc.`content_id`, lc.`title` FROM `".BIT_DB_PREFIX."liberty_content` lc WHERE lc.`content_id` IN (".implode( ',', array_fill( 0, count( $contactIds ), '?' ) ).")",
+ $contactIds
+ );
+ foreach( $supplierGroup->mXrefs as &$row ) {
+ if( !empty( $row['xref'] ) && isset( $contacts[$row['xref']] ) ) {
+ $row['xref_title'] = $contacts[$row['xref']];
+ }
+ }
+ unset( $row );
+ }
+
public function enrichXrefDisplay( array &$pXrefInfo ): void {
if( !empty( $pXrefInfo['xref'] ) && ( $pXrefInfo['x_group'] ?? '' ) === 'supplier' ) {
if( $contact = $this->mDb->getRow(
diff --git a/includes/classes/StockMovement.php b/includes/classes/StockMovement.php
index 6754650..ec70203 100644
--- a/includes/classes/StockMovement.php
+++ b/includes/classes/StockMovement.php
@@ -131,6 +131,26 @@ class StockMovement extends LibertyContent {
return true;
}
+ public function loadXrefInfo(): void {
+ parent::loadXrefInfo();
+ if( empty( $this->mXrefInfo ) ) return;
+ $bomGroup = $this->mXrefInfo->mGroups['quantity'] ?? null;
+ if( !$bomGroup || empty( $bomGroup->mXrefs ) ) return;
+ $componentIds = array_values( array_unique( array_filter( array_column( $bomGroup->mXrefs, 'xref' ) ) ) );
+ if( !$componentIds ) return;
+ $components = $this->mDb->getAssoc(
+ "SELECT lc.`content_id`, lc.`title`, lc.`data` FROM `".BIT_DB_PREFIX."liberty_content` lc WHERE lc.`content_id` IN (".implode( ',', array_fill( 0, count( $componentIds ), '?' ) ).")",
+ $componentIds
+ );
+ foreach( $bomGroup->mXrefs as &$row ) {
+ if( !empty( $row['xref'] ) && isset( $components[$row['xref']] ) ) {
+ $row['xref_title'] = $components[$row['xref']]['title'];
+ $row['xref_data'] = $components[$row['xref']]['data'];
+ }
+ }
+ unset( $row );
+ }
+
public function loadXrefList(): void {
parent::loadXrefList();
if( !empty( $this->mInfo['quantity'] ) ) {
diff --git a/includes/display_stock_assembly_inc.php b/includes/display_stock_assembly_inc.php
index 0e684ad..54fbb6f 100755
--- a/includes/display_stock_assembly_inc.php
+++ b/includes/display_stock_assembly_inc.php
@@ -14,7 +14,8 @@ $listHash['max_records'] = $gContent->mInfo["images_per_page"] ?? $max_records;
$gContent->loadComponents( $listHash );
$gContent->loadParentAssemblies();
-$gContent->mInfo['stockassembly_types'] = $gContent->getXrefGroupList();
+$gContent->loadXrefInfo();
+$gBitSmarty->assign( 'gXrefInfo', $gContent->mXrefInfo );
$gContent->addHit();
$gBitSmarty->assign( 'listInfo', $listHash['listInfo'] );
diff --git a/templates/edit_assembly.tpl b/templates/edit_assembly.tpl
index e071901..8639370 100755
--- a/templates/edit_assembly.tpl
+++ b/templates/edit_assembly.tpl
@@ -30,15 +30,14 @@
{/forminput}
</div>
- {if $gContent->mInfo.stockassembly_types}
+ {if $gXrefInfo->mGroups}
{jstabs}
- {section name=xrefGroup loop=$gContent->mInfo.stockassembly_types}
- {include file=$gContent->getXrefListTemplate($gContent->mInfo.stockassembly_types[xrefGroup].template)
- source=$gContent->mInfo.stockassembly_types[xrefGroup].source
- source_title=$gContent->mInfo.stockassembly_types[xrefGroup].title
- group=$gContent->mInfo.stockassembly_types[xrefGroup].sort_order
- allow_add=true}
- {/section}
+ {foreach $gXrefInfo->mGroups as $xrefGroup}
+ {include file=$gContent->getXrefListTemplate($xrefGroup->mTemplate)
+ xrefGroup=$xrefGroup
+ allow_add=true
+ allow_edit=true}
+ {/foreach}
{/jstabs}
{/if}
diff --git a/templates/edit_component.tpl b/templates/edit_component.tpl
index 5ff6f6e..a3c15c2 100755
--- a/templates/edit_component.tpl
+++ b/templates/edit_component.tpl
@@ -27,15 +27,14 @@
{include file="bitpackage:liberty/edit_services_inc.tpl" serviceFile="content_edit_mini_tpl"}
- {if $gContent->mInfo.stockcomponent_types}
+ {if $gXrefInfo->mGroups}
{jstabs}
- {section name=xrefGroup loop=$gContent->mInfo.stockcomponent_types}
- {include file=$gContent->getXrefListTemplate($gContent->mInfo.stockcomponent_types[xrefGroup].template)
- source=$gContent->mInfo.stockcomponent_types[xrefGroup].source
- source_title=$gContent->mInfo.stockcomponent_types[xrefGroup].title
- group=$gContent->mInfo.stockcomponent_types[xrefGroup].sort_order
- allow_add=true}
- {/section}
+ {foreach $gXrefInfo->mGroups as $xrefGroup}
+ {include file=$gContent->getXrefListTemplate($xrefGroup->mTemplate)
+ xrefGroup=$xrefGroup
+ allow_add=true
+ allow_edit=true}
+ {/foreach}
{/jstabs}
{/if}
diff --git a/templates/list_xref_stock.tpl b/templates/list_xref_stock.tpl
deleted file mode 100644
index e40794a..0000000
--- a/templates/list_xref_stock.tpl
+++ /dev/null
@@ -1,56 +0,0 @@
- {assign var=xrefcnt value=$gContent->mInfo.$source|default:[]|@count}
- {jstab title="$source_title ($xrefcnt)"}
- {legend legend=$source_title}
- <div class="form-group table-responsive">
- <table>
- <thead>
- <tr>
- <th>{tr}Source{/tr}</th>
- <th>{tr}Data{/tr}</th>
- {if $source ne 'history'}
- <th>{tr}Started{/tr}</th>
- {else}
- <th>{tr}Ended{/tr}</th>
- {/if}
- <th>{tr}Updated{/tr}</th>
- <th>{tr}Edit{/tr}</th>
- </tr>
- </thead>
- <tbody>
- {section name=xref loop=$gContent->mInfo.$source}
- <tr class="{cycle values="even,odd"}">
- <td>{$gContent->mInfo.$source[xref].source_title|escape}</td>
- <td>
- {if $gContent->mInfo.$source[xref].xref}
- <a href="{$smarty.const.CONTACT_PKG_URL}?content_id={$gContent->mInfo.$source[xref].xref}">{$gContent->mInfo.$source[xref].data|escape}</a>
- {else}
- {$gContent->mInfo.$source[xref].data|escape}
- {/if}
- </td>
- {if $source ne 'history'}
- <td>{$gContent->mInfo.$source[xref].start_date|bit_short_date}</td>
- {else}
- <td>{$gContent->mInfo.$source[xref].end_date|bit_short_date}</td>
- {/if}
- <td>{$gContent->mInfo.$source[xref].last_update_date|bit_short_date}</td>
- <td>
- {if $gBitUser->hasPermission('p_stock_update')}
- {smartlink ititle="Edit" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id}
- {/if}
- </td>
- </tr>
- {sectionelse}
- <tr class="norecords">
- <td colspan="5">{tr}No {$source_title} records found{/tr}</td>
- </tr>
- {/section}
- </tbody>
- </table>
- </div>
- {if $gBitUser->hasPermission('p_stock_update') && $source ne 'history'}
- <div>
- {smartlink ititle="Add record" ifile="add_xref.php" biticon="list-add" content_id=$gContent->mInfo.content_id group=$group}
- </div>
- {/if}
- {/legend}
- {/jstab}
diff --git a/templates/stockassembly/view_xref_bom_group.tpl b/templates/stockassembly/view_xref_bom_group.tpl
index e8b3904..77b9101 100644
--- a/templates/stockassembly/view_xref_bom_group.tpl
+++ b/templates/stockassembly/view_xref_bom_group.tpl
@@ -1,30 +1,32 @@
-{assign var=xrefcnt value=$gContent->mInfo.$source|default:[]|@count}
-{assign var=xrefAllowEdit value=$allow_edit|default:true}
-{jstab title="$source_title ($xrefcnt)"}
-{legend legend=$source_title}
+{assign var=xrefAllowEdit value=$allow_edit|default:false}
+{assign var=isHistory value=($xrefGroup->mXGroup eq 'history')}
+{jstab title="`$xrefGroup->mTitle` ({$xrefGroup->mXrefs|@count})"}
+{legend legend=$xrefGroup->mTitle}
<div class="form-group table-responsive">
- <table>
+ <table class="table">
<thead>
<tr>
- <th>{tr}Component{/tr}</th>
- <th>{tr}Description{/tr}</th>
- <th>{tr}Qty{/tr}</th>
- <th>{tr}Ref{/tr}</th>
+ <th style="width:30%">{tr}Component{/tr}</th>
+ <th style="width:25%">{tr}Description{/tr}</th>
+ <th style="width:15%">{tr}Qty{/tr}</th>
+ <th style="width:30%">{tr}Ref{/tr}</th>
{if $xrefAllowEdit}<th>{tr}Added{/tr}</th><th>{tr}Updated{/tr}</th><th>{tr}Edit{/tr}</th>{/if}
</tr>
</thead>
<tbody>
- {section name=xref loop=$gContent->mInfo.$source}
- {include file=$gContent->getXrefRecordTemplate($gContent->mInfo.$source[xref].template)}
- {sectionelse}
+ {if $xrefGroup->mXrefs}
+ {foreach $xrefGroup->mXrefs as $xrefInfo}
+ {include file=$gContent->getXrefRecordTemplate($xrefInfo.template)}
+ {/foreach}
+ {else}
<tr class="norecords">
- <td colspan="8">{tr}No parts list found{/tr}</td>
+ <td colspan="{if $xrefAllowEdit}7{else}4{/if}">{tr}No parts list found{/tr}</td>
</tr>
- {/section}
+ {/if}
</tbody>
</table>
</div>
-{if $allow_add && $gContent->isValid() && $gContent->hasUpdatePermission() && $source ne 'history'}
+{if $allow_add && $gContent->isValid() && $gContent->hasUpdatePermission() && !$isHistory}
<div>
{smartlink ititle="Add component" ipackage="stock" ifile="add_component.php" biticon="list-add" content_id=$gContent->mInfo.content_id}
</div>
diff --git a/templates/stockassembly/view_xref_bom_item.tpl b/templates/stockassembly/view_xref_bom_item.tpl
index 39dca2a..1ed0a95 100644
--- a/templates/stockassembly/view_xref_bom_item.tpl
+++ b/templates/stockassembly/view_xref_bom_item.tpl
@@ -1,33 +1,33 @@
{strip}
<tr class="{cycle values="even,odd"}">
<td>
- {if $gContent->mInfo.$source[xref].xref > 0}
- <a href="{$smarty.const.STOCK_PKG_URL}view_component.php?content_id={$gContent->mInfo.$source[xref].xref|escape}">{$gContent->mInfo.$source[xref].xref_title|default:$gContent->mInfo.$source[xref].xref|escape}</a>
+ {if $xrefInfo.xref > 0}
+ <a href="{$smarty.const.STOCK_PKG_URL}view_component.php?content_id={$xrefInfo.xref|escape}">{$xrefInfo.xref_title|default:$xrefInfo.xref|escape}</a>
{else}
&nbsp;
{/if}
</td>
- <td>{$gContent->mInfo.$source[xref].xref_data|escape}</td>
- <td>{$gContent->mInfo.$source[xref].xkey|escape}</td>
- <td>{$gContent->mInfo.$source[xref].xkey_ext|escape}</td>
+ <td>{$xrefInfo.xref_data|escape}</td>
+ <td>{$xrefInfo.xkey|escape}</td>
+ <td>{$xrefInfo.xkey_ext|escape}</td>
{if $xrefAllowEdit}
- <td>{$gContent->mInfo.$source[xref].start_date|bit_short_date}</td>
- <td>{$gContent->mInfo.$source[xref].last_update_date|bit_short_date}</td>
+ <td>{$xrefInfo.start_date|bit_short_date}</td>
+ <td>{$xrefInfo.last_update_date|bit_short_date}</td>
<td>
<span class="actionicon">
- {if $gContent->hasUpdatePermission() && $source ne 'history'}
- {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id}
+ {if $gContent->hasUpdatePermission() && !$isHistory}
+ {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id}
{/if}
{if $gContent->hasExpungePermission()}
- {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1}
+ {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=1}
{/if}
</span>
</td>
{/if}
</tr>
-{if $gContent->mInfo.$source[xref].data}
+{if $xrefInfo.data}
<tr>
- <td colspan="8" class="xref-note">{$gContent->mInfo.$source[xref].data|escape}</td>
+ <td colspan="{if $xrefAllowEdit}7{else}4{/if}" class="xref-note">{$xrefInfo.data|escape}</td>
</tr>
{/if}
{/strip}
diff --git a/templates/stockassembly/view_xref_bompck_item.tpl b/templates/stockassembly/view_xref_bompck_item.tpl
index e0de6c7..85dd7ac 100644
--- a/templates/stockassembly/view_xref_bompck_item.tpl
+++ b/templates/stockassembly/view_xref_bompck_item.tpl
@@ -1,33 +1,33 @@
{strip}
<tr class="{cycle values="even,odd"}">
<td>
- {if $gContent->mInfo.$source[xref].xref > 0}
- <a href="{$smarty.const.STOCK_PKG_URL}view_component.php?content_id={$gContent->mInfo.$source[xref].xref|escape}">{$gContent->mInfo.$source[xref].xref_title|default:$gContent->mInfo.$source[xref].xref|escape}</a>
+ {if $xrefInfo.xref > 0}
+ <a href="{$smarty.const.STOCK_PKG_URL}view_component.php?content_id={$xrefInfo.xref|escape}">{$xrefInfo.xref_title|default:$xrefInfo.xref|escape}</a>
{else}
&nbsp;
{/if}
</td>
- <td>{$gContent->mInfo.$source[xref].xref_data|escape}</td>
- <td>{$gContent->mInfo.$source[xref].xkey|escape}{if $gContent->mInfo.$source[xref].pack_size} of {$gContent->mInfo.$source[xref].pack_size|escape}{if $gContent->mInfo.$source[xref].pack_size_ext} {$gContent->mInfo.$source[xref].pack_size_ext|escape}{/if}{/if}</td>
- <td>{$gContent->mInfo.$source[xref].xkey_ext|escape}</td>
+ <td>{$xrefInfo.xref_data|escape}</td>
+ <td>{$xrefInfo.xkey|escape}{if $xrefInfo.pack_size} of {$xrefInfo.pack_size|escape}{if $xrefInfo.pack_size_ext} {$xrefInfo.pack_size_ext|escape}{/if}{/if}</td>
+ <td>{$xrefInfo.xkey_ext|escape}</td>
{if $xrefAllowEdit}
- <td>{$gContent->mInfo.$source[xref].start_date|bit_short_date}</td>
- <td>{$gContent->mInfo.$source[xref].last_update_date|bit_short_date}</td>
+ <td>{$xrefInfo.start_date|bit_short_date}</td>
+ <td>{$xrefInfo.last_update_date|bit_short_date}</td>
<td>
<span class="actionicon">
- {if $gContent->hasUpdatePermission() && $source ne 'history'}
- {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id}
+ {if $gContent->hasUpdatePermission() && !$isHistory}
+ {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id}
{/if}
{if $gContent->hasExpungePermission()}
- {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1}
+ {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=1}
{/if}
</span>
</td>
{/if}
</tr>
-{if $gContent->mInfo.$source[xref].data}
+{if $xrefInfo.data}
<tr>
- <td colspan="8" class="xref-note">{$gContent->mInfo.$source[xref].data|escape}</td>
+ <td colspan="{if $xrefAllowEdit}7{else}4{/if}" class="xref-note">{$xrefInfo.data|escape}</td>
</tr>
{/if}
{/strip}
diff --git a/templates/stockcomponent/view_xref_pck_item.tpl b/templates/stockcomponent/view_xref_pck_item.tpl
deleted file mode 100644
index a33eaeb..0000000
--- a/templates/stockcomponent/view_xref_pck_item.tpl
+++ /dev/null
@@ -1,26 +0,0 @@
-{strip}
-<tr class="{cycle values="even,odd"}">
- <td>{$gContent->mInfo.$source[xref].source_title|escape}</td>
- <td>&nbsp;</td>
- <td>{$gContent->mInfo.$source[xref].xkey|escape}</td>
- <td>{$gContent->mInfo.$source[xref].xkey_ext|escape}</td>
- <td>{if $source ne 'history'}{$gContent->mInfo.$source[xref].start_date|bit_short_date}{else}{$gContent->mInfo.$source[xref].end_date|bit_short_date}{/if}</td>
- <td>{$gContent->mInfo.$source[xref].last_update_date|bit_short_date}</td>
- {if $xrefAllowEdit|default:true}
- <td>
- <span class="actionicon">
- {if $gContent->hasUpdatePermission() && $source ne 'history'}
- {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id}
- {/if}
- {if $gContent->hasExpungePermission()}
- {if $source eq 'history'}
- {smartlink ititle="Restore" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=-1}
- {else}
- {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1}
- {/if}
- {/if}
- </span>
- </td>
- {/if}
-</tr>
-{/strip}
diff --git a/templates/stockcomponent/view_xref_sup_group.tpl b/templates/stockcomponent/view_xref_sup_group.tpl
index 53ad9ba..ad3ca0b 100644
--- a/templates/stockcomponent/view_xref_sup_group.tpl
+++ b/templates/stockcomponent/view_xref_sup_group.tpl
@@ -1,31 +1,32 @@
-{assign var=xrefcnt value=$gContent->mInfo.$source|default:[]|@count}
-{assign var=xrefAllowEdit value=$allow_edit|default:true}
-{jstab title="$source_title ($xrefcnt)"}
-{legend legend=$source_title}
+{assign var=xrefAllowEdit value=$allow_edit|default:false}
+{assign var=isHistory value=($xrefGroup->mXGroup eq 'history')}
+{jstab title="`$xrefGroup->mTitle` ({$xrefGroup->mXrefs|@count})"}
+{legend legend=$xrefGroup->mTitle}
<div class="form-group table-responsive">
- <table>
+ <table class="table">
<thead>
<tr>
- <th>{tr}Supplier{/tr}</th>
- <th>{tr}Part No.{/tr}</th>
- <th>{tr}Price{/tr}</th>
- <th>{tr}Note{/tr}</th>
+ <th style="width:30%">{tr}Supplier{/tr}</th>
+ <th style="width:20%">{tr}Part No.{/tr}</th>
+ <th style="width:20%">{tr}Price{/tr}</th>
+ <th style="width:30%">{tr}Note{/tr}</th>
{if $xrefAllowEdit}<th>{tr}Added{/tr}</th><th>{tr}Updated{/tr}</th><th>{tr}Edit{/tr}</th>{/if}
</tr>
</thead>
<tbody>
- {section name=xref loop=$gContent->mInfo.$source}
- {assign var=_rowTpl value=$gContent->mInfo.$source[xref].template}
- {include file=$gContent->getXrefRecordTemplate($_rowTpl)}
- {sectionelse}
+ {if $xrefGroup->mXrefs}
+ {foreach $xrefGroup->mXrefs as $xrefInfo}
+ {include file=$gContent->getXrefRecordTemplate($xrefInfo.template)}
+ {/foreach}
+ {else}
<tr class="norecords">
- <td colspan="7">{tr}No supplier records found{/tr}</td>
+ <td colspan="{if $xrefAllowEdit}7{else}4{/if}">{tr}No supplier records found{/tr}</td>
</tr>
- {/section}
+ {/if}
</tbody>
</table>
</div>
-{if $allow_add && $gContent->isValid() && $gContent->hasUpdatePermission() && $source ne 'history'}
+{if $allow_add && $gContent->isValid() && $gContent->hasUpdatePermission() && !$isHistory}
<div>
{smartlink ititle="Add supplier" ipackage="stock" ifile="add_supplier.php" biticon="list-add" content_id=$gContent->mInfo.content_id}
</div>
diff --git a/templates/stockcomponent/view_xref_sup_item.tpl b/templates/stockcomponent/view_xref_sup_item.tpl
index 19ac5cf..811c077 100644
--- a/templates/stockcomponent/view_xref_sup_item.tpl
+++ b/templates/stockcomponent/view_xref_sup_item.tpl
@@ -1,30 +1,28 @@
{strip}
<tr class="{cycle values="even,odd"}">
<td>
- {if $gContent->mInfo.$source[xref].xref > 0}
- <a href="{$smarty.const.CONTACT_PKG_URL}display_contact.php?content_id={$gContent->mInfo.$source[xref].xref|escape}">{$gContent->mInfo.$source[xref].xref_title|default:$gContent->mInfo.$source[xref].xref|escape}</a>
+ {if $xrefInfo.xref > 0}
+ <a href="{$smarty.const.CONTACT_PKG_URL}display_contact.php?content_id={$xrefInfo.xref|escape}">{$xrefInfo.xref_title|default:$xrefInfo.xref|escape}</a>
{else}
&nbsp;
{/if}
</td>
- <td>{$gContent->mInfo.$source[xref].xkey|escape}</td>
- <td>{$gContent->mInfo.$source[xref].xkey_ext|escape}</td>
- <td>{$gContent->mInfo.$source[xref].data|escape}</td>
- {if $xrefAllowEdit}
- <td>{$gContent->mInfo.$source[xref].start_date|bit_short_date}</td>
- <td>{$gContent->mInfo.$source[xref].last_update_date|bit_short_date}</td>
- {/if}
+ <td>{$xrefInfo.xkey|escape}</td>
+ <td>{$xrefInfo.xkey_ext|escape}</td>
+ <td>{$xrefInfo.data|escape}</td>
{if $xrefAllowEdit}
+ <td>{$xrefInfo.start_date|bit_short_date}</td>
+ <td>{$xrefInfo.last_update_date|bit_short_date}</td>
<td>
<span class="actionicon">
- {if $gContent->hasUpdatePermission() && $source ne 'history'}
- {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id}
+ {if $gContent->hasUpdatePermission() && !$isHistory}
+ {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id}
{/if}
{if $gContent->hasExpungePermission()}
- {if $source eq 'history'}
- {smartlink ititle="Restore" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=-1}
+ {if $isHistory}
+ {smartlink ititle="Restore" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=-1}
{else}
- {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1}
+ {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=1}
{/if}
{/if}
</span>
diff --git a/templates/stockmovement/view_xref_bom_group.tpl b/templates/stockmovement/view_xref_bom_group.tpl
index e8be5ea..a2c47c3 100644
--- a/templates/stockmovement/view_xref_bom_group.tpl
+++ b/templates/stockmovement/view_xref_bom_group.tpl
@@ -1,32 +1,34 @@
-{assign var=xrefcnt value=$gContent->mInfo.$source|default:[]|@count}
-{assign var=xrefAllowEdit value=$allow_edit|default:true}
-{jstab title="$source_title ($xrefcnt)"}
-{legend legend=$source_title}
+{assign var=xrefAllowEdit value=$allow_edit|default:false}
+{assign var=isHistory value=($xrefGroup->mXGroup eq 'history')}
+{jstab title="`$xrefGroup->mTitle` ({$xrefGroup->mXrefs|@count})"}
+{legend legend=$xrefGroup->mTitle}
<div class="form-group table-responsive">
- <table>
+ <table class="table">
<thead>
<tr>
- <th>{tr}Component{/tr}</th>
- <th>{tr}Description{/tr}</th>
- <th>{tr}Qty{/tr}</th>
- <th>{tr}Ref{/tr}</th>
+ <th style="width:20%">{tr}Component{/tr}</th>
+ <th style="width:40%">{tr}Description{/tr}</th>
+ <th style="width:15%">{tr}Qty{/tr}</th>
+ <th style="width:25%">{tr}Ref{/tr}</th>
{if $xrefAllowEdit}<th>{tr}Added{/tr}</th><th>{tr}Updated{/tr}</th><th>{tr}Edit{/tr}</th>{/if}
</tr>
</thead>
<tbody>
- {section name=xref loop=$gContent->mInfo.$source}
- {include file=$gContent->getXrefRecordTemplate($gContent->mInfo.$source[xref].template)}
- {sectionelse}
+ {if $xrefGroup->mXrefs}
+ {foreach $xrefGroup->mXrefs as $xrefInfo}
+ {include file=$gContent->getXrefRecordTemplate($xrefInfo.template)}
+ {/foreach}
+ {else}
<tr class="norecords">
- <td colspan="8">{tr}No parts list found{/tr}</td>
+ <td colspan="{if $xrefAllowEdit}7{else}4{/if}">{tr}No parts list found{/tr}</td>
</tr>
- {/section}
+ {/if}
</tbody>
</table>
</div>
-{if $allow_add && $gContent->isValid() && $gContent->hasUpdatePermission() && $source ne 'history'}
+{if $allow_add && $gContent->isValid() && $gContent->hasUpdatePermission() && !$isHistory}
<div>
- {smartlink ititle="Add record" ipackage="liberty" ifile="add_xref.php" biticon="list-add" content_id=$gContent->mInfo.content_id group=$group}
+ {smartlink ititle="Add record" ipackage="liberty" ifile="add_xref.php" biticon="list-add" content_id=$gContent->mInfo.content_id group=$xrefGroup->mSortOrder}
</div>
{/if}
{/legend}
diff --git a/templates/stockmovement/view_xref_bom_item.tpl b/templates/stockmovement/view_xref_bom_item.tpl
index 39dca2a..1ed0a95 100644
--- a/templates/stockmovement/view_xref_bom_item.tpl
+++ b/templates/stockmovement/view_xref_bom_item.tpl
@@ -1,33 +1,33 @@
{strip}
<tr class="{cycle values="even,odd"}">
<td>
- {if $gContent->mInfo.$source[xref].xref > 0}
- <a href="{$smarty.const.STOCK_PKG_URL}view_component.php?content_id={$gContent->mInfo.$source[xref].xref|escape}">{$gContent->mInfo.$source[xref].xref_title|default:$gContent->mInfo.$source[xref].xref|escape}</a>
+ {if $xrefInfo.xref > 0}
+ <a href="{$smarty.const.STOCK_PKG_URL}view_component.php?content_id={$xrefInfo.xref|escape}">{$xrefInfo.xref_title|default:$xrefInfo.xref|escape}</a>
{else}
&nbsp;
{/if}
</td>
- <td>{$gContent->mInfo.$source[xref].xref_data|escape}</td>
- <td>{$gContent->mInfo.$source[xref].xkey|escape}</td>
- <td>{$gContent->mInfo.$source[xref].xkey_ext|escape}</td>
+ <td>{$xrefInfo.xref_data|escape}</td>
+ <td>{$xrefInfo.xkey|escape}</td>
+ <td>{$xrefInfo.xkey_ext|escape}</td>
{if $xrefAllowEdit}
- <td>{$gContent->mInfo.$source[xref].start_date|bit_short_date}</td>
- <td>{$gContent->mInfo.$source[xref].last_update_date|bit_short_date}</td>
+ <td>{$xrefInfo.start_date|bit_short_date}</td>
+ <td>{$xrefInfo.last_update_date|bit_short_date}</td>
<td>
<span class="actionicon">
- {if $gContent->hasUpdatePermission() && $source ne 'history'}
- {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id}
+ {if $gContent->hasUpdatePermission() && !$isHistory}
+ {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id}
{/if}
{if $gContent->hasExpungePermission()}
- {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1}
+ {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=1}
{/if}
</span>
</td>
{/if}
</tr>
-{if $gContent->mInfo.$source[xref].data}
+{if $xrefInfo.data}
<tr>
- <td colspan="8" class="xref-note">{$gContent->mInfo.$source[xref].data|escape}</td>
+ <td colspan="{if $xrefAllowEdit}7{else}4{/if}" class="xref-note">{$xrefInfo.data|escape}</td>
</tr>
{/if}
{/strip}
diff --git a/templates/stockmovement/view_xref_bompck_item.tpl b/templates/stockmovement/view_xref_bompck_item.tpl
index e0de6c7..85dd7ac 100644
--- a/templates/stockmovement/view_xref_bompck_item.tpl
+++ b/templates/stockmovement/view_xref_bompck_item.tpl
@@ -1,33 +1,33 @@
{strip}
<tr class="{cycle values="even,odd"}">
<td>
- {if $gContent->mInfo.$source[xref].xref > 0}
- <a href="{$smarty.const.STOCK_PKG_URL}view_component.php?content_id={$gContent->mInfo.$source[xref].xref|escape}">{$gContent->mInfo.$source[xref].xref_title|default:$gContent->mInfo.$source[xref].xref|escape}</a>
+ {if $xrefInfo.xref > 0}
+ <a href="{$smarty.const.STOCK_PKG_URL}view_component.php?content_id={$xrefInfo.xref|escape}">{$xrefInfo.xref_title|default:$xrefInfo.xref|escape}</a>
{else}
&nbsp;
{/if}
</td>
- <td>{$gContent->mInfo.$source[xref].xref_data|escape}</td>
- <td>{$gContent->mInfo.$source[xref].xkey|escape}{if $gContent->mInfo.$source[xref].pack_size} of {$gContent->mInfo.$source[xref].pack_size|escape}{if $gContent->mInfo.$source[xref].pack_size_ext} {$gContent->mInfo.$source[xref].pack_size_ext|escape}{/if}{/if}</td>
- <td>{$gContent->mInfo.$source[xref].xkey_ext|escape}</td>
+ <td>{$xrefInfo.xref_data|escape}</td>
+ <td>{$xrefInfo.xkey|escape}{if $xrefInfo.pack_size} of {$xrefInfo.pack_size|escape}{if $xrefInfo.pack_size_ext} {$xrefInfo.pack_size_ext|escape}{/if}{/if}</td>
+ <td>{$xrefInfo.xkey_ext|escape}</td>
{if $xrefAllowEdit}
- <td>{$gContent->mInfo.$source[xref].start_date|bit_short_date}</td>
- <td>{$gContent->mInfo.$source[xref].last_update_date|bit_short_date}</td>
+ <td>{$xrefInfo.start_date|bit_short_date}</td>
+ <td>{$xrefInfo.last_update_date|bit_short_date}</td>
<td>
<span class="actionicon">
- {if $gContent->hasUpdatePermission() && $source ne 'history'}
- {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id}
+ {if $gContent->hasUpdatePermission() && !$isHistory}
+ {smartlink ititle="Edit" ipackage="liberty" ifile="edit_xref.php" biticon="edit" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id}
{/if}
{if $gContent->hasExpungePermission()}
- {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$gContent->mInfo.$source[xref].xref_id expunge=1}
+ {smartlink ititle="Delete" ipackage="liberty" ifile="edit_xref.php" biticon="user-trash" content_id=$gContent->mInfo.content_id xref_id=$xrefInfo.xref_id expunge=1}
{/if}
</span>
</td>
{/if}
</tr>
-{if $gContent->mInfo.$source[xref].data}
+{if $xrefInfo.data}
<tr>
- <td colspan="8" class="xref-note">{$gContent->mInfo.$source[xref].data|escape}</td>
+ <td colspan="{if $xrefAllowEdit}7{else}4{/if}" class="xref-note">{$xrefInfo.data|escape}</td>
</tr>
{/if}
{/strip}
diff --git a/templates/view_assembly.tpl b/templates/view_assembly.tpl
index 564f97f..b1ef284 100755
--- a/templates/view_assembly.tpl
+++ b/templates/view_assembly.tpl
@@ -13,14 +13,12 @@
{/if}
{include file="`$smarty.const.STOCK_PKG_PATH`assembly_views/`$galLayout`/stock_`$galLayout`_inc.tpl"}
-{if $gContent->mInfo.stockassembly_types}
+{if $gXrefInfo->mGroups}
{jstabs}
- {section name=xrefGroup loop=$gContent->mInfo.stockassembly_types}
- {include file=$gContent->getXrefListTemplate($gContent->mInfo.stockassembly_types[xrefGroup].template)
- source=$gContent->mInfo.stockassembly_types[xrefGroup].source
- source_title=$gContent->mInfo.stockassembly_types[xrefGroup].title
- group=$gContent->mInfo.stockassembly_types[xrefGroup].sort_order
+ {foreach $gXrefInfo->mGroups as $xrefGroup}
+ {include file=$gContent->getXrefListTemplate($xrefGroup->mTemplate)
+ xrefGroup=$xrefGroup
allow_edit=false}
- {/section}
+ {/foreach}
{/jstabs}
{/if}
diff --git a/templates/view_component.tpl b/templates/view_component.tpl
index 251314c..f0b3c8a 100755
--- a/templates/view_component.tpl
+++ b/templates/view_component.tpl
@@ -26,14 +26,12 @@
{/if}
{jstabs}
- {if $gContent->mInfo.stockcomponent_types}
- {section name=xrefGroup loop=$gContent->mInfo.stockcomponent_types}
- {include file=$gContent->getXrefListTemplate($gContent->mInfo.stockcomponent_types[xrefGroup].template)
- source=$gContent->mInfo.stockcomponent_types[xrefGroup].source
- source_title=$gContent->mInfo.stockcomponent_types[xrefGroup].title
- group=$gContent->mInfo.stockcomponent_types[xrefGroup].sort_order
+ {if $gXrefInfo->mGroups}
+ {foreach $gXrefInfo->mGroups as $xrefGroup}
+ {include file=$gContent->getXrefListTemplate($xrefGroup->mTemplate)
+ xrefGroup=$xrefGroup
allow_edit=false}
- {/section}
+ {/foreach}
{/if}
{jstab title="{tr}Stock{/tr}"}
diff --git a/templates/view_movement.tpl b/templates/view_movement.tpl
index 41b6b19..72932b2 100644
--- a/templates/view_movement.tpl
+++ b/templates/view_movement.tpl
@@ -42,15 +42,12 @@
{/if}
</dl>
- {assign var=movXrefGroups value=$gContent->getXrefGroupList()}
- {if $movXrefGroups}
+ {if $gXrefInfo->mGroups}
{jstabs}
- {foreach from=$movXrefGroups item=xrefGroup}
- {if $xrefGroup.x_group neq 'reference'}
- {include file=$gContent->getXrefListTemplate($xrefGroup.template)
- source=$xrefGroup.source
- source_title=$xrefGroup.title
- group=$xrefGroup.sort_order
+ {foreach $gXrefInfo->mGroups as $xrefGroup}
+ {if $xrefGroup->mXGroup neq 'reference'}
+ {include file=$gContent->getXrefListTemplate($xrefGroup->mTemplate)
+ xrefGroup=$xrefGroup
allow_add=false
allow_edit=false}
{/if}
diff --git a/view_component.php b/view_component.php
index de1958a..82f7c18 100755
--- a/view_component.php
+++ b/view_component.php
@@ -34,7 +34,8 @@ if( is_object( $gGallery ) && $gGallery->isCommentable() ) {
$gContent->addHit();
-$gContent->mInfo['stockcomponent_types'] = $gContent->getXrefGroupList();
+$gContent->loadXrefInfo();
+$gBitSmarty->assign( 'gXrefInfo', $gContent->mXrefInfo );
// Stock levels for this component, calculated from movement xrefs
if( $gContent->isValid() ) {
diff --git a/view_movement.php b/view_movement.php
index 1b97407..43327ae 100644
--- a/view_movement.php
+++ b/view_movement.php
@@ -21,4 +21,7 @@ if( !$gContent->isValid() ) {
$gBitSystem->setCanonicalLink( $gContent->getDisplayUrl() );
+$gContent->loadXrefInfo();
+$gBitSmarty->assign( 'gXrefInfo', $gContent->mXrefInfo );
+
$gBitSystem->display( 'bitpackage:stock/view_movement.tpl', $gContent->getTitle() );