Karamellwuerfel Posted July 4, 2019 Report Posted July 4, 2019 (edited) Hello folks! I thought about to edit categories in the default download module and changed it to my needs. After you deactivate a download category, it wont show up in your list. Important information: BEFORE do this tutorial, backup the database tables and files you'll edit. lib/skins/pandaair_theme/downloads_list.php admin/modules/Downloads/Downloads.php admin/templates/downloads_categoryform.php core/common/DownloadData.class.php database table phpvms_downloads 1. Open your database and run the following command. It will add a column to your downloads table. Be sure to add the right prefix for the table: ALTER TABLE `phpvms_downloads` ADD `active` INT NOT NULL DEFAULT '1' AFTER `hits`; 2. Replace the content of the file "admin/templates/downloads_categoryform.php" with following: <?php if(!defined('IN_PHPVMS') && IN_PHPVMS !== true) { die(); } ?> <h3><?php echo $title?></h3> <form id="form" method="post" action="<?php echo adminaction('/downloads/overview'); ?>"> <dl> <dt>Category Name</dt> <dd><input name="name" type="text" value="<?php echo $category->name; ?>" /></dd> <dt>Category Active? <input name="active" type="checkbox" <?= ($category->active) ? "checked":"" ?> <?= (empty($category->name)) ? "checked":"" ?> style="margin-bottom: 20px;" /></dt> <dt></dt> <dd><input type="hidden" name="id" value="<?php echo $category->id;?>" /> <input type="hidden" name="action" value="<?php echo $action;?>" /> <input type="submit" name="submit" value="<?php echo $title;?>" /> </dd> </dl> </form> We added the checkbox to enable/disable the category. 3. Edit the file "core/common/DownloadData.class.php" The following two functions have to be replaced: "AddCategory" and "EditAsset": public static function AddCategory($name, $link = '', $image = '', $active = 1) { if ($name == '') return false; $sql = "INSERT INTO " . TABLE_PREFIX . "downloads (pid, name, link, image) VALUES (0, '$name', '$link', '$image', '$active')"; $res = DB::query($sql); if (DB::errno() != 0) return false; return true; } public static function EditAsset($data) { /*$data = array( 'id' => '' 'parent_id' => '', 'name' => '', 'description' => '', 'link' => '', 'image' => '', ); */ if ($data['id'] == '' || $data['name'] == '') return false; $data['id'] = intval($data['id']); $data['name'] = DB::escape($data['name']); $data['parent_id'] = intval($data['parent_id']); $sql = "UPDATE " . TABLE_PREFIX . "downloads SET `pid`={$data['parent_id']}, `name`='{$data['name']}', `active`='{$data['active']}', `description`='{$data['description']}', link='{$data['link']}', image='{$data['image']}' WHERE id={$data['id']}"; $res = DB::query($sql); if (DB::errno() != 0) return false; return true; } Well, we included there the "active" parameter from the checkbox, so it will be changed in the database. 4. The file "admin/modules/Downloads/Downloads.php" contains two functions "AddCategoryPost" and "EditCategoryPost". We have to replace them with the following: protected function AddCategoryPost() { $this->checkPermission(EDIT_DOWNLOADS); if ($this->post->name == '') { $this->set('message', 'No category name entered!'); $this->render('core_error.php'); return; } if (DownloadData::FindCategory($this->post->name)) { $this->set('message', 'Category already exists'); $this->render('core_error.php'); return; } if(!empty($this->post->active)){ $active = 1; } else { $active = 0; } DownloadData::AddCategory($this->post->name, '', '', $active); $this->set('message', 'Category added!'); $this->render('core_success.php'); } protected function EditCategoryPost() { $this->checkPermission(EDIT_DOWNLOADS); if ($this->post->name == '') { $this->set('message', 'No category name entered!'); $this->render('core_error.php'); return; } if(!empty($this->post->active)){ $active = 1; } else { $active = 0; } $data = array('id' => $this->post->id, 'name' => $this->post->name, 'parent_id' => '', 'description' => '', 'link' => '', 'image' => '', 'active' => $active); DownloadData::EditAsset($data); $this->set('message', 'Category edited!'); $this->render('core_success.php'); } That's it for the "tricky" part. Now let's hide the deactivated categories in the core/templates/downloads_list.php. Just search for the "foreach" loop of the categories and check if the category has "1" in the active parameter. If it doesn't, don't show the category: foreach($allcategories as $category) { if(!$category->active) { continue; } // more stuff..... Have fun and howdy! Edited July 4, 2019 by Karamellwuerfel Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.