diff options
| author | Lester Caine <lester@lsces.co.uk> | 2026-06-10 10:40:30 +0100 |
|---|---|---|
| committer | Lester Caine <lester@lsces.co.uk> | 2026-06-10 10:40:30 +0100 |
| commit | 77995206ac8bdbd8129d1daabb02cba599250795 (patch) | |
| tree | a7edaea1c38c77bfc497a86c005c35a98f54d14b | |
| parent | 1aa20fae43178e0164fe9c110c23bd4ba3946de8 (diff) | |
| download | stock-77995206ac8bdbd8129d1daabb02cba599250795.tar.gz stock-77995206ac8bdbd8129d1daabb02cba599250795.tar.bz2 stock-77995206ac8bdbd8129d1daabb02cba599250795.zip | |
stock: add edit_stgrp_item.php/tpl for CKEditor editing of stgrp descriptions; parse_data in view_kitlocker; p_stock_admin edit icon in gallery
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| -rw-r--r-- | edit_stgrp_item.php | 57 | ||||
| -rw-r--r-- | templates/edit_stgrp_item.tpl | 29 | ||||
| -rwxr-xr-x | templates/stock_fixed_grid_inc.tpl | 7 | ||||
| -rw-r--r-- | view_kitlocker.php | 9 |
4 files changed, 100 insertions, 2 deletions
diff --git a/edit_stgrp_item.php b/edit_stgrp_item.php new file mode 100644 index 0000000..27066cc --- /dev/null +++ b/edit_stgrp_item.php @@ -0,0 +1,57 @@ +<?php +/** + * Edit the data (description) field of a stgrp liberty_xref_item entry. + * @package stock + */ + +namespace Bitweaver\Stock; + +use Bitweaver\KernelTools; + +require_once '../kernel/includes/setup_inc.php'; + +$gBitSystem->verifyPackage( 'stock' ); +$gBitSystem->verifyPermission( 'p_stock_admin' ); + +global $gBitSystem, $gBitSmarty, $gBitDb; + +$item = trim( $_REQUEST['item'] ?? '' ); +if( !preg_match( '/^[A-Z0-9]{2,8}$/', $item ) ) { + $gBitSystem->fatalError( KernelTools::tra( 'Invalid item code.' ) ); +} + +$X = BIT_DB_PREFIX; + +$row = $gBitDb->getRow( + "SELECT `item`, `cross_ref_title`, `data` + FROM `{$X}liberty_xref_item` + WHERE `item` = ? AND `x_group` = 'stgrp' AND `content_type_guid` = 'stock'", + [ $item ] +); +if( !$row ) { + $gBitSystem->fatalError( KernelTools::tra( 'Stock group not found.' ) ); +} + +$errors = []; + +if( !empty( $_POST['fSave'] ) ) { + $data = trim( $_POST['data'] ?? '' ) ?: null; + $gBitDb->query( + "UPDATE `{$X}liberty_xref_item` SET `data` = ? + WHERE `item` = ? AND `x_group` = 'stgrp' AND `content_type_guid` = 'stock'", + [ $data, $item ] + ); + header( 'Location: '.STOCK_PKG_URL.'view_kitlocker.php' ); + die; +} + +if( !empty( $_POST['fCancel'] ) ) { + header( 'Location: '.STOCK_PKG_URL.'view_kitlocker.php' ); + die; +} + +$gBitSmarty->assign( 'stgrpItem', $row ); +$gBitSmarty->assign( 'errors', $errors ); + +$gBitSystem->setBrowserTitle( KernelTools::tra( 'Edit' ).': '.$row['cross_ref_title'] ); +$gBitSystem->display( 'bitpackage:stock/edit_stgrp_item.tpl', null, [ 'display_mode' => 'edit' ] ); diff --git a/templates/edit_stgrp_item.tpl b/templates/edit_stgrp_item.tpl new file mode 100644 index 0000000..404de02 --- /dev/null +++ b/templates/edit_stgrp_item.tpl @@ -0,0 +1,29 @@ +{strip} +<div class="edit stock"> + <header> + <div class="floaticon"> + </div> + <h1>{tr}Edit{/tr}: {$stgrpItem.cross_ref_title|escape}</h1> + <small><a href="{$smarty.const.STOCK_PKG_URL}view_kitlocker.php">‹ {tr}Kitlocker{/tr}</a></small> + </header> + + <section class="body"> + {formfeedback error=$errors} + {form} + <input type="hidden" name="item" value="{$stgrpItem.item|escape}"/> + + <div class="form-group"> + {formlabel label="Description" for="editliberty"} + {forminput} + {textarea edit=$stgrpItem.data name='data' rows=10} + {/forminput} + </div> + + <div class="form-group submit"> + <input type="submit" class="btn btn-default" name="fCancel" value="{tr}Cancel{/tr}"/> + <input type="submit" class="btn btn-primary" name="fSave" value="{tr}Save{/tr}"/> + </div> + {/form} + </section> +</div> +{/strip} diff --git a/templates/stock_fixed_grid_inc.tpl b/templates/stock_fixed_grid_inc.tpl index f4c3aae..f13011d 100755 --- a/templates/stock_fixed_grid_inc.tpl +++ b/templates/stock_fixed_grid_inc.tpl @@ -13,10 +13,13 @@ <div class="panel panel-default"> <div class="panel-heading"> <a href="{$smarty.const.STOCK_PKG_URL}list_kitlocker.php?stgrp={$item.item|escape:'url'}">{$item.cross_ref_title|escape}</a> + {if $gBitUser->hasPermission('p_stock_admin')} + <a class="pull-right" title="{tr}Edit{/tr}" href="{$smarty.const.STOCK_PKG_URL}edit_stgrp_item.php?item={$item.item|escape:'url'}">{biticon ipackage="icons" iname="edit" iexplain="Edit"}</a> + {/if} </div> - {if $item.data} + {if $item.parsed_data} <div class="panel-body"> - {$item.data|escape} + {$item.parsed_data} </div> {/if} <div class="panel-footer"> diff --git a/view_kitlocker.php b/view_kitlocker.php index 2523337..0974b75 100644 --- a/view_kitlocker.php +++ b/view_kitlocker.php @@ -7,6 +7,7 @@ namespace Bitweaver\Stock; use Bitweaver\KernelTools; +use Bitweaver\Liberty\LibertyContent; require_once '../kernel/includes/setup_inc.php'; @@ -25,6 +26,14 @@ $stgrpItems = $gBitDb->getAll( ORDER BY xi.`item`" ); +foreach( $stgrpItems as &$row ) { + if( !empty( $row['data'] ) ) { + $parseHash = [ 'data' => $row['data'], 'format_guid' => 'bithtml' ]; + $row['parsed_data'] = LibertyContent::parseDataHash( $parseHash ); + } +} +unset( $row ); + $gBitSmarty->assign( 'stgrpItems', $stgrpItems ); $gBitSystem->setBrowserTitle( KernelTools::tra( 'Kitlocker' ) ); |
