# Zoki Catalog

# User Guide

- Overview
- Features
- Installation
- Admin Panel Description
- Adding New Language

## Overview

Smart Catalog is unique and convenient software designed for many purposes whether you want to create blog, product catalog, classifieds, events, jobs and many others. This software gives you opportunity to create general categories and unlimited number of subcategories, upload images to listings, rate and comment listings. Smart Catalog is SEO optimized with RSS feeds and fast indexed with major search engines.

## Features:

General
- Search engine friendly URLs.
- Based on CodeIgniter Engine.
- Multilingual interface with ability of translation Articles and Categories.
- Static pages.

Categories:
- Unlimited categories.
- Unlimited subcategory nesting.
- RSS feeds for every category.
- Custom icons for each category.
- Category description and keywords.
- Custom URLs for categories.

Articles
- Unlimited articles.
- View statistic.
- Rate and vote system.
- Featured posts.
- News.
- Ability to define lifetime for article.
- Several options to arranges pictures.
- Comments.

Flexible site options and settings system:
- Optional post- or pre-moderation.
- Optional security images for categories, articles and comments.
- Optional browse mode.
- Customize content on index page.
- Manage image size.
- Manage number of images in articles.
.. and much more

Administration:
- Mass Mailer
- Email templates
- Trash

## Installation

Installation consists of several easy steps.

### Uploading

First of all you have to upload all files to you sever using FTP.

### Set Permissions

Set permissions to files below to be writable by all (666 or -rw-rw-rw- using your FTP Client)
`./system/application/config/config.php
./system/application/config/config_catalog_custom.php
./system/application/config/config_general.php
./system/application/config/database.php
` Set permissions to directories below to be writable by all (777 or -rwxrwxrwx using your FTP Client)
`./system/application/uploads/post
./system/application/uploads/users
./system/application/uploads/category
./views/_page
`

### Run installation Script

Using your web browser open directory where you placed Zoki Catalog and add "install" keyword, e.g. http://www.yourdomain.com/install/, http://www.yourdomain.com/script_path/install/ etc. And follow installation instructions.

### Important

Once you have successfully installed Zoki Directory you MUST ensure you remove the entire ./system/application/controllers/install/ directory. Leaving it is a very serious potential security issue which may lead to deletion or alteration of your files or database or other terrible things.

### Admin panel

When you pass all installation steps you can login to admin panel using url http://www.yourdomain.com/admin or, if script installed at subfolder - http://www.yourdomain.com/--script_path--/admin
Admin Credentials: `login: 'admin'
password: 'zoki'` NOTE: it is good practice to immediately change admin password within admin's profile.

## Admin Panel Description

Home tab:

This is first page admin see. There are table with brief stat information about current catalog state.

Categories tab:

This is list of categories. Under main tab there are 3 submenu tabs:
view as list:

Shows list of categories with attached list of subsequent children.
Fields 'order' intend for change category order at catalog. The bigger value is set - the farther this category will be in category list.
Categories colored with pink background have status "inactive".

view as tree:

Shows full list of categories as tree.
Very useful to manage whole category structure.

translations:

If administrator enable more than one language for catalog - shows full list of categories as tree with subsequent languages markers.
These markers inform witch categories has no translation to corresponding language.
By clicking on these markers, administrator has ability to edit category title, description and keywords on selected language.

Post tab:

All related to articles.

posts:

List of articles. Shows title, snippet and keywords corresponding to default language. If there are no article translation specified, system picks up these values from any other available language and mark article with pink color.
You can use filter by article status, type and category to narrow article list.

translations:

This tab is simplified list of articles. It shows table of available languages and article translations. If no translation exists, system mark corresponding article with red "no" word.
By pressing it or article title you get to translation page and can edit article on selected language.

custom fields:

Administrator can add his own "custom" fields to articles.
At this page placed list of already created custom fields. At first column placed field description.
Second column responsible for fields order.
All subsequent columns informs about field translations to installed languages.
Admin can add new field by clicking "add new" link.
Add New Field:
There are several types and options available. First off all, you should specify field id . This should be word typed in latin letters. This word uses to define particular field. The value of this word should be unique. If you enter value that already exists - system automatically will add number to it.
Field type. There are 6 field types:

- Numbers. The value of this field required and should be numeric value.
- Singe text field. The value of this field is textual and not longer than 255 symbols.
- Textarea. Textual field with high volume.
- Radio button. Set of radio buttons.
- Check button. Set of checkboxes.
- Dropdown box.

Display field. Intend for hide field from articles.
Field Mode. There are 3 modes:

- The user is able to see and change this field. But it is not required.
- Same as previous one, but this field is required.
- Hidden field. Intend for admin notes and comments. Only administrators and moderators are able to see/fill out this field.

Field name/title presented to the user. This name will be displayed to users. Please note - this value will be added only for current language. To translate it to another you should edit this field on corresponding language (links to it placed at "Manage Custom Fields" page).
Values. If you add field that need predefined range of possible values (radio, check or dropdown box), you should add these values here. Values separates by new line. So, you should type every value in new string.

Users tab:

List of registered users. You can use filter to find particular user of define user group.

Comments tab:

List of comments posted by users and visitors.

Options tab:

Set of catalog settings.

catalog:

- Enable PreModeration:
  there are 2 major options - post and pre moderation.
  post-moderation means that all categories and articles submitted by users immediately appears at your site. It supposed that admin will check new content later and delete inappropriate.
  pre-moderation means that all new categories and articles should be reviewed and approved by admin to appear at your site.
- Browse mode:
  While browsing categories content, system shows not only particular category content, but content of all subcategories.
- Max size of files to upload:
  This value affects all files for uploading, including images.
- Max width of file to upload:
  Concerns to images. Max allowed image width for uploading.
- Max height of file to upload
  Concerns to images. Max allowed image height for uploading.
- Length of security code:
  If security images enabled, specifies length of code in symbols.
- Pagination: items per page:
  Number of elements per page. Note: in admin panel system use this value multiply by 2.
- Enable security images:
  Enable security images at user registration form, add article and add category forms.
- Catalog default charset:
  Charset of catalog html pages. Note: if you are going to use several languages, we strongly recommend to set this value to 'UTF-8'.
- Catalog title:
  Set catalog title.
- Catalog description:
  Define catalog description.
- Catalog keywords:
  Set catalog keywords.

post:

- Max limit of comment, characters:
  Max number of characters allowed in comments.
- Number of allowed pics for post:
  Max number of images allowed to be uploaded for article.
- Width of post thumb pics:
  Width of automatically created thumbnails.
- Height of post thumb pics:
  Height of automatically created thumbnails.
- Width of post icon pics:
  Width of automatically created icons.
- Heigth of post icon pics:
  Height of automatically created icons.
- Security images for comments:
  Enable security images for comments. This option separated from major option 'Enable security images' and works independently.
- Max limit of post title, characters:
  Max size of characters in post title.

category:

- Width of category icon:
  Width of automatically resized category image.
- Height of category icon:
  Height of automatically resized category image.

user:

- Width of user icon:
  Width of automatically resized user icon.
- Height of user icon:
  Width of automatically resized user icon.
- User thumb width:
  Width of automatically resized user thumbnail.
- User thumb height:
  Height of automatically resized user thumbnail.
- Newbie user status:
  Status assigned to new users (after confirmation if it is enabled).
- Send confirmation mail:
  Enable confirmation emails after user registration.
- Max length of user nickname:
  Maximal number of characters allowed in nickname.
- Min length of user nickname:
  Minimal number of characters allowed in nickname.
- Max length of user password:
  Maximal number of characters allowed in user password.
- Min length of user password:
  Minimal number of characters allowed in user password.

index:

settings of index page:

- Number of news at index page:
  The system sort news by date and shows specified number starting from most recent.
- Number of featured posts at index page:
  The system picks up specified number of featured articles in random order.
- Number of recent posts at index page:
  Amount of resent articles.
- Number of top rated posts at index page:
  The system calculates and display top rated articles. Rate calculates by number of votes, number of views and date of submit.
- Number of random posts at index page:
  Amount of random articles.

ads:

Here you can insert html code of banner or adsense. Representation place for this code defines by particular template.

all:

List of all options at one page.

Mass mailer tab:

Here you can send mass mails to specified user group.
Letter can be send to internal catalog mailbox or to user emails.
To successfully send emails to external user emails, you should set cron job:
`*/15 * * * * php /PATH TO CATALOG/system/application/scripts/index_console.php cron/send_mail`

Email Templates tab:

This is email templates that system automatically sends to users.
Near email body placed list of available variables. You can insert them into template by double clicking on variable. While sending letters, these variables will be automatically replaced to corresponding values.

Langs tab:

This is language panel.
Here you can add or delete language or set default one.
WARNING: before adding new language, read language manual

Static pages tab:

List of static pages.
Admin can add new page by pressing "add new" link.
While adding, admin has ability to define url name for page. the final url will consist of following parts: `http://www.DOMAIN NAME.com/info/NAME SPECIFIED BY ADMIN` translations:

List with available static pages and language markers.
By pressing marker admin can edit and save static page on particular language.

Trash tab:

Deleted articles, users, categories and comments go here.
Admin can restore any deleted item or completely delete it.

## Adding New Language

First of all, administrator should prepare language files to translate site interface.

Language files keeps at folder

`./system/language`

The simplest way is copy folder of already existed files and rename it to language you need.

For example, if you want to add German language, copy folder "english" somewhere, rename it to "german", and copy back.

Now you have German language, but the files itself still keep English translation.

Main catalog language file is

`catalog_lang.php`

You should open it with any editor and change English translation to German:

`$lang['user_profile'] = "User Profile";
$lang['user_pic'] = "User Picture";
$lang['user_nick'] = "User NickName";
$lang['user_name'] = "User Name";
$lang['user_desc'] = "User Description";
...` `$lang['user_profile'] = "-=german translation=-";
$lang['user_pic'] = "-=german translation=-";
$lang['user_nick'] = "-=german translation=-";
$lang['user_name'] = "-=german translation=-";
$lang['user_desc'] = "-=german translation=-";
...`

Now, when you prepared language files, you can add language at admin panel.

Open admin panel and go to 'lang' section. Go to "Add New" form and add name of folder with new language in "BaseName" field. Add language title and check "Default" box if you want this language to be default.

Now you have added new language to catalog.

The catalog language system works in such way:

- Categories:
  If there are no translation of category title in selected language, instead of title, system will use category basename. So, if in one language you see categories titles, but in another something like "category_1" - you should translate this category to corresponding language.
- Articles:
  Articles that have no translation to selected language don't shows. So, if in one language you see category full of articles, but in another the category is empty - you should translate articles in this category.
- Custom fields:
  Fields displays only if they have translation on particular language. Otherwise they are hidden.
- Catalog URLs:
  If you are using more than one language, this will affect catalog URLs.
  URLs of catalog with default language remain intact.
  To URLs of catalog with nondefault language system add additional data - language identify. This is word 'lang-' + basename of current language. For example, if you add German language, To all catalog urls will be added value '/lang-german'.
  It follows from this that if you want to change language of any catalog page - just add to page url value '/lang-LANGUAGE_BASENAME'. Surely the language with specified basename should be installed.