summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLester Caine <lester@lsces.co.uk>2026-06-10 10:40:30 +0100
committerLester Caine <lester@lsces.co.uk>2026-06-10 10:40:30 +0100
commit77995206ac8bdbd8129d1daabb02cba599250795 (patch)
treea7edaea1c38c77bfc497a86c005c35a98f54d14b
parent1aa20fae43178e0164fe9c110c23bd4ba3946de8 (diff)
downloadstock-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.php57
-rw-r--r--templates/edit_stgrp_item.tpl29
-rwxr-xr-xtemplates/stock_fixed_grid_inc.tpl7
-rw-r--r--view_kitlocker.php9
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">&lsaquo; {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' ) );