Overview

General Idea

The general idea of creating iQDesk Engine was to build some kind of universal extensible tool, which could help the customers to organize their own work flow using only the modules they really required in. The prime line of developing is to make the engine be modular. In so system each module could be presented as singleton application, work only in tandem with other modules or both ways. Thinking about these ways of developing pushed us to choice CodeIgniter framework as the base of the engine and the awesome HMVC extension for this great framework, which allows us to turn into reality all our ideas and submissions.

So as iQDesk Engine uses the CodeIgniter framework as the base, so you can be free to use official documentation to find out more about the global structure of applications, default classes, libraries, methods and etc.

One the important thing, which you should to keep in your mind during developing of your own modules, is the idea of universality of the whole system. Of course, your module could be presented as singleton extensions of the iQDesk Engine, and it won't exchange the data with other modules, but just imagine your module will be so popular, and some other developer would be happy to write his own module which will use the data of your module. You have to remember everytime, that everything you write for the iQDesk Engine for production, should be understandable and clear for other developers. Also keep in mind, when you will be ready to send us your module to place it into the Module Shop, we will check it, and the factor of universality will be paramount.

Now you know everything about our submissions regarding iQDesk Engine and you're ready to start work with. Be brave, go to the next section and dive with us into the amazing world of coding with iQDesk Engine.

Installation

First, what you have to do to start work with iQDesk Engine, is to get the latest version of the engine. Please visit the project's website to find the latest version.

Once you download the latest version of iQDesk Engine, you have to unzip it somewhere in your web-host folder. Make sure the handling of the hostname is setup in your Apache settings exactly for this folder. If you're using the hosting services, just unzip downloaded engine archive into the root website folder.

Now you're ready to open your browser and type in the url-address of your host where you unpacked the engine file. If it's the first time run of iQDesk Engine, it will automatically redirect you on the installation tool, which helps you to setup all required fields step-by-step.

1. Setup SQL Settings

First, select between your SQL driver, is it MySQL or MySQLi. Then setup the host name, where your SQL server is installed. The host name usually is "localhost" or "127.0.0.1". If you don't know the host name of your SQL server, please check it with the support of your hosting provider. Then fill the database name and make sure that this database is already created. Fill correct user name and password of SQL user. The tables prefix is automatically generated, it's done only for security reason, if you want you can change it for some other which you prefer. By clicking "Next" button, the installation will check all the filled details, and if some of them are wrong, the installation tool will notify you about it.

2. Create Admin User

On this step, the installation tool offer you to put the details for the master admin user for your engine. This user is undeletable in system, attached to the highest possible role in the system with allowed all possible modules, sections and actions. It's pretty important user in the system, please, make sure no one else know these login details, to prevent the cases of unauthorized actions in the system.

3. Define Preferences

This step will help you to set up the interface preferences for iQDesk Engine. The default language allows you to set up the language, which you will see in the engine interface, but anyways all other languages will be available for you as well. Main page title defines the primary part of tab title in your browser, you can set up it according to your company name. Page title delimiter defines the char or set of chars between the parts of title in your browser tab. (For example: iQDesk Engine v.2.0 :: Users, in this case, the chars set "::" splits the parts of title, first part determines the main title and the second one defines the opened module in tab). Color scheme allows you to select preferred colors in the system. The labels of this field are active for mouse hover, showing you a preview of the color scheme mapping. Once you click "Next", the installation tool checks all required files for installation, checks permissions for all folder, which will be affected during installation, and only if all the tests are passed, the installation will be started.

4. Complete Installation

It's a final step of installation. If everything went well, it will congratulate you with successful installation, and will offer you to login immediately.

Important!

The installation tool is written such way, that it should be self deleted after complete installation, to prevent unauthorized attempts to reinstall the engine. But sometimes the permissions for the installation folder don't allow to do it. In this case, you can go 2 ways to solve it:

  1. Check permissions for the install folder, and change them if it's required
  2. Delete the install folder manually after complete installation.

But don't worry, if you didn't change permissions, and the installation tool couldn't be able to delete self, you will see a notification about it, with detailed instructions what to do.

General Files Structure


Root Folder
application
assets
install
modules
system
uploads
index.php
.htaccess

application /folder

Contains the engine files: extended libraries, default controllers and views, helpers, languages and configs of the engine.

assets /folder

Contains the assets files: stylesheets, JavaScript libraries, images, fonts and themes.

install /folder

Engine installation tool folder. Should be removed after complete installation.
(If for some reasons this folder wasn't deleted, please delete it manually)

modules /folder

Root folder for installed modules in the iQDesk Engine. Keep in mind, to be able to install or update the modules, this folder should have permissions allowing writing in.

system /folder

Contains CodeInginiter framework files. To be sure the engine will works fine, don't apply any changes in files of this folder.

uploads /folder

Root folder for the modules uploading files. Make sure, that this folder has permissions allowing writing in.

index.php /file

Entry point of iQDesk Engine. Please, do not any changes in this file.

.htaccess /file

Additional configuration file of Apache web-server. Make sure your web-server has enabled mod_rewrite module, in otherwise the engine will not work properly.
(If you're proficient with apache settings, you can apply change in this file)

Module Files Structure


Root Module Folder
assets
controllers
events
language
models
sql
views
module.xml

assets /folder

Contains the module assets: module icons, module css and module JavaScript libraries.

controllers /folder

Contains the module controller files.

events /folder

Contains the module events catcher file.

language /folder

Contains the text translations of the module.

models /folder

Contains the module model files.

sql /folder

Contains the SQL files which being processed during the installation or uninstallation module process.

views /folder

Contains the module view files.

module.xml /file

Main module XML file, consists of the system description of the module structure, which defines the navigation items, sections and actions, version, author of the module, relation between modules and etc.

No one of these folders is required for placing into the module folder. One file which is required for sure is the file module.xml.

Detailed explanation for all module files and simple examples of their containment will be given in the Server-Side Coding section.

Routing

The default routing of iQDesk Engine is the same as for the set CodeIgniter framework + HMVC extension:

/[module_name]/[controller_name]/[action_name]/[parameters]

If the name of module and controller are matched, the target url can be truncated:

/[module_name]/[action_name]
But keep in mind, in this case you're not able to send any SEF-parameters after [action_name], but you are still possible to send $_GET parameters.

If the name of action is "index", the target url can be truncated:

/[module_name]/[controller_name]
But keep in mind, in this case you're not able to send any SEF-parameters after [action_name], but you are still possible to send $_GET parameters.

If the name of action is "index" and the name of module and controller are matched, the target url can be truncated:

/[module_name]
But keep in mind, in this case you're not able to send any SEF-parameters after [action_name], but you are still possible to send $_GET parameters.

If you're proficient with CodeIgniter framework routing setup, you can try to edit following file to set up your own customized routes.

/application/config/routes.php

If you're proficient with Apache web-server settings, you can try to edit following file to set up your own customized routes.

/.htaccess

Sell Your Module

You have written and tested an unique module, and you like to share it with the world around. So how you are able to sell your module?

Firstly, you have to go to the project's website and sign up as developer. You will get your own details to login developer zone, which provides you the functionality to manage your own modules: upload, delete (only when is not approved), send requests for approval new modules, see reviews, rating and downloads of your modules. Besides these features you also will have the options to manage your subscription. It's the step number two. To be able to publish your modules in official modules shop, you have to be subscribed for the developer program. The price of the subscription you can find on the project's website. Once you will have an active subscription, you will be able to upload your module, set the price which you think is fair for this, and send a request for adding your module in the official modules shop. Once your module will be approved, all the users of iQDesk Engine will have an able to buy your module.

After you published a module you will get a functionality to upload updates for this. Every update package should also be approved by the iQDesk Engine team. Once it will be approved, all users, who bought and installed your module, will have an option to update it for your latest updated version.

Important!

You cannot delete module from the shop, if it was approved. Sounds like a bad case, if you have found some critical bugs. In this case you should contact the iQDesk Engine team with an urgent letter to temporary disable module, because of critical bug. The iQDesk Team will hide it in the shop, and you will have a chance to make an update for your module.

Please note, if your module will be approved and in disabled mode during one month, and there will not be any updates from your side, the iQDesk Team will delete your module. All following your modules, will have a stronger revision, and could take more time to be approved by iQDesk Team.


Regarding the terms and conditions of selling your modules you can read on the project's website.