ACC SHELL
<?php
function printCategory( $db, $id, $level, $maxLevel )
{
$r = '';
$categoryMenu = '';
if ( ( $id != '1' ) && ( $id != '2' ) ) // root
{
$categoryMenu .= '
<div class="pageItemListButton" onclick="window.location=\'/admin/admin.php?action=listMenu&cmd=edit&id=' . $id . '\';" title="Upravit" >
Upravit
</div>';
//if ( $level > 1 )
//{
$categoryMenu .= '
<div class="iconMinusSubmit" onclick="window.location=\'/admin/admin.php?action=listMenu&cmd=delete&id=' . $id . '\';" title="Smazat" >
Smazat
</div>';
//}
}
if ( $level < $maxLevel )
{
$categoryMenu .= '
<div class="delic10"></div>
<div class="iconPlus" onclick="window.location=\'/admin/admin.php?action=listMenu&cmd=new&id=' . $id . '\';" title="Přidat menu položku" >
Přidat menu položku
</div>';
}
$category = $db->getItem( 'menu', $id );
$r .= '<div class="admin-category">'. chr(13);
$r .= ' <div>'. chr(13);
$r .= ' <div class="admin-category-name border" id="admin-category-item-' . $id . '">
<div style="float:left; width: 120px;">' . stripslashes( $category['label'] ) . '</div>';
if ( ( $id != '1' ) && ( $id != '2' ) ) // root
$r .= ' <span style="color:#bbb; float:left;" title="pozice: ' . $category['position'] . '">(' . $category['position'] . ')</span>
<div class="delic10"></div>';
$r .= ' <div class="admin-category-menu" id="admin-category-menu-' . $id . '">
' . $categoryMenu . '
</div>
</div>
<div class="cleaner"> </div>
</div>'. chr(13);
/*$r .= ' <script type="text/javascript">
$("#admin-category-item-' . $id . '").hover( function()
{
$("#admin-category-menu-' . $id . '").toggle();
} );
</script>';*/
$subCategories = $db->getAllItems( 'menu', " WHERE `parentID`='" . $id . "' ORDER BY `position` ASC" );
if ( count( $subCategories ) > 0 )
{
$level++;
foreach ( $subCategories as $subCategory )
{
$r .= printCategory( $db, $subCategory['ID'], $level, $maxLevel );
}
}
$r .= '</div>'. chr(13);
return $r;
}
function printEditCategory( $db, $id, $new = false )
{
$htmlPage = new stdClass();
$r = '';
if ( $new )
{
$category['label'] = '';
$category['url'] = '';
$category['target'] = '';
$category['type'] = '';
$category['position'] = '';
$category['cssClass'] = '';
$category['parentID'] = $id;
}
else
{
$category = $db->getItem( 'menu', $id );
}
$r .= '<form action="" method="post" enctype="multipart/form-data">';
$r .= '<div class="admin-user-label border" >' . 'Název' . '</div>';
$r .= '<input type="text" class="admin-user-edit-value" name="label" value="' . stripslashes( $category['label'] ) . '" />';
$r .= '<div class="cleaner"></div>';
//$r .= '<div class="admin-user-label border" >' . 'URL' . '</div>';
//$r .= '<input type="text" class="admin-user-edit-value" name="url" value="' . stripslashes( $category['url'] ) . '" />';
//$r .= '<div class="cleaner"></div>';
$r .= '<div class="cleaner"></div>';
$r .= '<div class="admin-user-label border" >' . 'Pozice' . '</div>';
$r .= '<input type="text" class="admin-user-edit-value" name="position" value="' . $category['position'] . '" />';
$r .= '<div class="cleaner"></div>';
$r .= '<div class="admin-user-label border" >' . 'CSS class (Advanced users only!)' . '</div>';
$r .= '<input type="text" class="admin-user-edit-value" name="cssClass" value="' . $category['cssClass'] . '" />';
$r .= '<div class="cleaner"></div>';
$r .= '<div class="admin-user-label border" >' . 'Typ' . '</div>';
$r .= '<div class="admin-user-edit-value" >' . "\n";
$r .= ' <select name="type" class="admin-user-edit-scroll" onchange="javascript: categoryTypeOnChange(this.value); ">' . "\n";
$r .= ' <option value=""></option>' . "\n";
$r .= ' <option value="showPage" '.( ($category['type']=="showPage") ? 'selected="selected"' : '').' >stránka</option>' . "\n";
$r .= ' <option value="externalLink" '.( ($category['type']=="externalLink") ? 'selected="selected"' : '').' >odkaz / URL adresa</option>' . "\n";
$r .= ' <option value="productList" '.( ($category['type']=="productList") ? 'selected="selected"' : '').' >kategorie</option>' . "\n";
$r .= ' </select>' . "\n";
$r .= '</div>' . "\n";
$r .= '<div class="cleaner"></div>';
$r .= '<div id="target-wrapper" '.( ($category['type']!="showPage") ? 'style="display:none"' : '').' >' . "\n";
$r .= ' <div class="admin-user-label border" >' . 'Stránka' . '</div>';
$r .= ' <div class="admin-user-edit-value" >' . "\n";
$r .= ' <select name="target" class="admin-user-edit-scroll" >' . "\n";
$r .= ' <option value=""></option>' . "\n";
$pages = $db->getAllItems( 'page', " WHERE `parentID`=0 ORDER BY `title` ASC " );
$pagesCount = count( $pages );
if ( $pagesCount > 0 )
{
$i = 1;
foreach ( $pages as $page )
{
if ( !isset( $htmlPage->listItem[ $i ] ) )
$htmlPage->listItem[ $i ] = new stdClass();
$htmlPage->listItem[ $i ]->ID = $page['ID'];
$htmlPage->listItem[ $i ]->title = $page['title'];
$r .= ' <option value="'.$page['ID'].'" '.( ($category['target']==$page['ID']) ? 'selected="selected"' : '').' >' . $page['title'] . '</option>' . "\n";
$i++;
$subPages = $db->getAllItems( 'page', " WHERE `parentID`=" . $page['ID'] . " ORDER BY `title` ASC " );
$subPagesCount = count( $subPages );
if ( $subPagesCount > 0 )
{
foreach ( $subPages as $subPage )
{
$htmlPage->listItem[ $i ]->ID = $subPage['ID'];
$htmlPage->listItem[ $i ]->title = $page['title'] . ' -> ' . $subPage['title'];
$r .= ' <option value="'.$subPage['ID'].'" '.( ($category['target']==$subPage['ID']) ? 'selected="selected"' : '').' >' . $page['title'] . ' -> ' . $subPage['title'] . '</option>' . "\n";
$i++;
}
}
}
}
$r .= ' </select>' . "\n";
$r .= ' </div>' . "\n";
$r .= ' <div class="cleaner"></div>';
$r .= '</div>' . "\n";
$r .= '<div id="target-wrapper-2" '.( ($category['type']!="externalLink") ? 'style="display:none"' : '').' >' . "\n";
$r .= ' <div class="admin-user-label border" >' . 'Odkaz' . '</div>';
$r .= ' <input type="text" class="admin-user-edit-value" name="target-link" value="' . ( ($category['type']=="externalLink") ? $category['target'] : '') . '" />';
$r .= ' <div class="cleaner"></div>';
$r .= '</div>' . "\n";
$r .= '<div id="target-wrapper-3" '.( ($category['type']!="productList") ? 'style="display:none"' : '').' >' . "\n";
$r .= ' <div class="admin-user-label border" >' . 'Kategorie' . '</div>';
$r .= ' <div class="admin-user-edit-value" >' . "\n";
$r .= ' <select name="target-category" class="admin-user-edit-scroll" >' . "\n";
$sPages = $db->getAllItems( 'category', " ORDER BY `title` ASC" );
if ( count( $sPages ) > 0 )
{
foreach ( $sPages as $sPage )
{
$categoryTypeDesc = '';
if ( $sPage['categoryType'] == 'product' ) $categoryTypeDesc = ' (Produkty)';
if ( $sPage['categoryType'] == 'article' ) $categoryTypeDesc = ' (Články)';
if ( $sPage['categoryType'] == 'photogallery' ) $categoryTypeDesc = ' (Fotogalerie)';
$r .= ' <option value="'.$sPage['ID'].'" '.( ($category['target']==$sPage['ID']) ? 'selected="selected"' : '').' >' . $sPage['title'] . $categoryTypeDesc . '</option>' . "\n";
}
}
$r .= ' </select>' . "\n";
$r .= ' </div>' . "\n";
$r .= ' <div class="cleaner"></div>';
$r .= '</div>' . "\n";
$r .= ' <script type="text/javascript">
function categoryTypeOnChange( value )
{
if ( value==\'showPage\' )
{
$("#target-wrapper").show("fast");
}
else
{
$("#target-wrapper").hide("fast");
}
if ( value==\'externalLink\' )
{
$("#target-wrapper-2").show("fast");
}
else
{
$("#target-wrapper-2").hide("fast");
}
if ( value==\'productList\' )
{
$("#target-wrapper-3").show("fast");
}
else
{
$("#target-wrapper-3").hide("fast");
}
}
</script>';
$r .= '<input type="hidden" name="parentID" value="' . $category['parentID'] . '" />';
if ( $new )
{
$r .= '<input type="hidden" name="new" value="new" />';
}
else
{
//if ( ( $category['parentID'] == '1' ) || ( $category['parentID'] == '2' ) )
//{
$r .= '<div class="admin-user-label border" >' . 'Obrázek' . '</div>';
$r .= '<input type="file" class="admin-user-edit-value" name="image" />';
if ( $category['image'] != '' )
{
$r .= '<div class="cleaner"></div>';
$r .= '<image src="/data/menu0/images/' . $category['image'] . '" alt="" />';
$r .= '<input type="checkbox" name="imageDelete" id="imageDelete" />';
$r .= '<label for="imageDelete"> Smazat obrázek</label>';
}
$r .= '<div class="cleaner"></div>';
//}
}
$r .= '<div class="cleaner20"></div>';
$r .= '<input type="submit" name="OK_button" value="' . 'Uložit' . '" class="admin-button-green" />';
$r .= '<div class="cleaner10"></div>';
$r .= '</form>';
$r .= '<div onclick="window.location=\'/admin/admin.php?action=listMenu\';" class="admin-button" style="float:left;">' . 'storno' . '</div>';
return $r;
}
function deleteCategory( $db, $id )
{
$category = $db->getItem( 'menu', $id );
$subCategories = $db->getAllItems( 'menu', " WHERE `parentID`='" . $id . "'" );
if ( count( $subCategories ) > 0 )
{
foreach ( $subCategories as $subCategory )
{
deleteCategory( $db, $subCategory['ID'] );
}
}
$db->deleteItem( 'menu', $id );
}
function printDeleteCategory( $db, $id )
{
$r = '';
$category = $db->getItem( 'menu', $id );
$subCategories = $db->getAllItems( 'menu', " WHERE `parentID`=" . $id );
$r .= '<form action="" method="post">';
if ( count( $subCategories ) > 0 )
$r .= 'Chcete <span style="color:#F00">smazat</span> menu položku: <strong>' . $category['label'] .'</strong>, včetně všech pod-položek<span style="color:#F00">?';
else
$r .= 'Chcete <span style="color:#F00">smazat</span> menu položku: <strong>' . $category['label'] .'</strong><span style="color:#F00">?</span>';
$r .= '<br />';
$r .= '<br />';
$r .= '<input type="submit" name="OK_button" value="Smazat" class="admin-button" />';
$r .= '<br />';
$r .= '<br />';
$r .= '</form>';
$r .= '<a href="/admin/admin.php?action=listMenu" >' . 'zpět' . '</a>';
return $r;
}
switch ( $url_cmd )
{
case 'new':
if ( isset( $_POST['OK_button'] ) )
{
$target = '';
if ( $_POST['type'] == 'externalLink' )
$target = $_POST['target-link'];
else if ( $_POST['type'] == 'productList' )
$target = $_POST['target-category'];
else
$target = $_POST['target'];
//include( 'admin-menu-before-save.php' );
$db->insertItem( 'menu',
array( 'parentID'=>$_POST['parentID'], 'position'=>$_POST['position'], 'type'=>$_POST['type'],
'label'=>$_POST['label'], 'cssClass'=>$_POST['cssClass'], /*'url'=>$_POST['url'],*/
'target'=>$target) );
js_redirect( '/admin/admin.php?action=listMenu' );
}
echo printEditCategory( $db, $url_id, true );
break;
case 'edit':
if ( isset( $_POST['OK_button'] ) )
{
$target = '';
if ( $_POST['type'] == 'externalLink' )
$target = $_POST['target-link'];
else if ( $_POST['type'] == 'productList' )
$target = $_POST['target-category'];
else
$target = $_POST['target'];
//include( 'admin-menu-before-save.php' );
$db->setItem( 'menu', $url_id,
array( 'parentID'=>$_POST['parentID'], 'position'=>$_POST['position'], 'type'=>$_POST['type'],
'label'=>$_POST['label'], 'cssClass'=>$_POST['cssClass'], /*'url'=>$_POST['url'],*/
'target'=>$target) );
///
$iuItemID = $url_id;
$iuDirImages = '../data/menu0/images';
$iuDirImagesFull = $iuDirImages . '/';
$iuImageFileName = '';
$iuImageDbTable = 'menu';
$iuImageDbField = 'image';
foreach ( $_FILES as $file )
{
$fileName = basename( $file['name'] );
if ( $fileName != '' )
{
if ( $iuImageFileName != '' )
{
$sourceImageFileName = $iuDirImagesFull . '/' . $iuImageFileName;
$fileName = $iuImageFileName;
}
else
{
$fileName = $iuItemID . '-' . $fileName;
$sourceImageFileName = $iuDirImagesFull . '/' . $fileName;
}
if ( move_uploaded_file( $file['tmp_name'], $sourceImageFileName ) )
{
if ( $iuImageFileName == '' )
{
$db->setItem( $iuImageDbTable, $iuItemID, array( $iuImageDbField => $fileName ) );
}
}
//echo $iuDirImagesFull . '/' . $fileName . '?' . rand(0, 100000);
}
break;
}
if ( isset( $_POST['imageDelete'] ) && ( $_POST['imageDelete'] == 'on' ) )
{
$menuItem = $db->getItem( $iuImageDbTable, $iuItemID );
unlink( $iuDirImagesFull . $menuItem[ $iuImageDbField ] );
$db->setItem( $iuImageDbTable, $iuItemID, array( $iuImageDbField => '' ) );
}
///
js_redirect( '/admin/admin.php?action=listMenu' );
}
echo printEditCategory( $db, $url_id );
break;
case 'delete':
if ( isset( $_POST['OK_button'] ) )
{
deleteCategory( $db, $url_id );
js_redirect( '/admin/admin.php?action=listMenu' );
}
echo printDeleteCategory( $db, $url_id );
break;
default:
echo printCategory( $db, '1', 0, 3 );
echo '
<div class="cleaner10"> </div>
<hr />
<div class="cleaner10"> </div>
';
echo printCategory( $db, '2', 0, 2 );
echo '<div class="cleaner"> </div>';
break;
}
?>
ACC SHELL 2018