s

MagicApps - Documentation

What is MagicApps?

MagicApps is unique integrated software package which contains:
  1. ESN - Enterprise Social Network
  2. Social Project Management tools
  3. AppMarket - with 12 full Apps included
  4. AppBuilder - with no coding
  5. AppGenerator - data driven Apps
MagicApps is intended to use:
  • by You (as SystemAdmin and Apps editor&developer)
  • by Your end-users (as Apps and ESN users)
For example, end-user scenario may looks like this one - Company NorthWind Technologies uses MagicApps as Project Management and Internal Communication and Collaboration tool:
  • Admin create new User
  • User first login, profile update, change password
  • User goto AppMarket and installs selected Apps into own Profile
  • User using Apps...
  • Apps automaticaly posts User activity messages into Stream - creating transparent and informative working environment
  • Other Users can comment or like any activity from any User, any record from any App
  • System will create new User-notifications in case of comment or like
  • System will create new User-notification in case of assigning new Task
  • Notifications keep You up-to-date with Your activity and information context
  • Users using private Messages as 1-to-1 or group-messaging
  • New message also create new message-notification
  • You knows who read and who do not read specific messages
  • SysAdmin can Edit any App, on screen, on the fly - add new or remove/reorder fields on Forms and columns on Browse
  • Edited App is instantly available to all Users (no need to uninstall/install)
  • SysAdmin can create new App, using AppWizard this takes a minute or less
  • New App is in AppMarket so all other Users can install it by them self
Why is MagicApps Social Project Management better than regular Project Management?
  • Project is Workspace here in Enterprise Social Network
  • Workspace is like Container for all other Apps-records
  • So any App can be used in Project management context
  • So Project Management has great benefits from built-in Enterprise Social Network and great Social features built into all Apps

MagicApps technology benefits for You

MagicApps will hide from You all technology complexities and give You extreme productivity in new Apps development, so You can focus only to delivering the business benefits to Your Users.

MagicApps uses metadata tehnology: complete Apps are stored in central repository (database). With AppBuilder You will create new Apps or modify existing App – but with no coding. All You have to do is just setting properties. AppGenerator will serve those Apps to end Users on the fly with superb performances.

Because metadata development is code-free, it extremely reduces development time by eliminating developer errors and by saving redundant steps.

MagicApps comes with fully automated installing process.

MagicApps is a great solution for increasing your company productivity, communication and collaboration.
It is a responsive WebApp that is based on the AdminLTE free HTML template.

Note: Here is MagicApps short video introduction




Put our app files in the root folder on your server and run the 'install' directory. You should see this screen:

After entering your database connection credentials click 'Connect' and let the script test your connection.
If database connection was successful you should see this screen:



If not, please click 'Try again' until you get the success message.

On this screen 'Demo content' is selected by default, so you can see some content and user interaction in our app.
If you would like a clean system, with only one admin user and no content, please select 'Clean install' and click on the 'Install' button.

Congratulations! You have successfully installed MagicApps
All tables needed for MagicApps have been imported into your database.



After you click 'Finish' the 'install' folder and all of its contens will be deleted for security reasons.

File 'inc_dbinfo.php' will be generated in root directoy on your server. Please do not edit that file.

You will be redirected to login screen. Use 'admin@demo.com' with password '123456789' and enjoy MagicApps.

File Hierarchy of the Source Code Package

	 MagicApps/
	├── bootstrap/ (clean bootstrap 3)
	│
	├── build/
	│   ├── less/
	│   │   ├── MagicApps Less files
	│   └── Bootstrap-less/ (Only for reference. No modifications have been made)
	│       ├── mixins/
	│       ├── variables.less
	│       └── mixins.less
	├── dist/
	│   ├── CSS/
	│   ├── JS/
	│   │   └── custom.js (user events: likes, comments, status updates...)
	│   │   └── demo.custom.js (demo user events: alerts 'Demo!' for all user events)
	│   └── img/
	│       └── favicon.png (favorites icon, check 'inc_styles.php')
	│
	├── documentation/ (CSS and JS files)
	│
	├── images/ (documentation images) 
	│
	├── install/ (MagicApps instalation folder)
	│
	├── plugins/
	│   └── All the customized plugins CSS and JS files
	│
	├── upl/ (profile picture, documents, cover photos upload folder)
	│
	├── inc_dbinfo.php (contains database connection credentials, generated after the installation process)
	│
	├── inc_dbconnect.php (connects to the database provided in 'inc_dbinfo.php' file)
	│
	├── inc_main.php (main configuration file and label translations for MagicApps)
	│
	├── inc_lib.php (functions that return user data: 'fGiveMeUserFullName', 'fGiveMeProfilePicture'...)
	│
	├── inc_styles.php (all CSS files used within MagicApps)
	│
	├── inc_scripts.php (all JS files used within MagicApps)
	│
	├── home.php (main screen file. It opens basic stream by default)
	│   └── inc_home.php (different streams are based on $_GET parameters - pIDpos,pIDproject,pIDuser)  
	│       └── inc_profile.php (based on $_GET 'pIDuser' this file gets included and shows single user profile stream)
	│       └── inc_inc_home_comments.php (generates comments from database for stream posts)
	│       └── inc_inc_home_posts.php (generates posts from database)
	│
	├── messages.php (messages screen, used for all or single message display)
	│   ├── inc_msg_all.php (shows all of your conversations with dataTables. Easy searchable and sortable)  
	│   └── inc_msg_single.php (single conversation real-time chat screen)
	│
	├── inc_notif*.php (all scripts starting wih 'inc_notif' are used for notification update)
	│
	├── password.php (user password change screen)
	│
	├── profile_pic.php (change user profile picture)
	│
	├── load_*.php (all files with 'load_' prefix pull and append data instantly via AJAX)
	│
	├── save_*.php (all files with 'save_' prefix save and append data instantly via AJAX)
	│
	├── login.php (main login screen)
	│
	├── login_check.php (used to check input from login.php and create all necessary $_SESSION variables used by MagicApps)
	│
	├── logout.php (destroys session and logs the user out)
	│
	├── lockscreen.php (also destroys session and logs the user out, but you can login faster only by typing your password)
	│
	├── app_*.php (app files, app builder, app generator)
	│
	└── blank.php (blank screen template with all scripts included)
	
	

Default Stream

The default stream shows all posts within MagicApps. You can update your status only on this screen. As you scroll down, posts are loaded automatically on all streams.

Project Stream

Project stream filters stream posts to only those that belong in certain project.

User Stream

User profile stream shows you only posts created by the user whos profile you are on.

All messages

Main messages screen allows you to search and sort your private messages, but also create new conversations. Users with red circle around their profile picture have not seen all messages inside the conversation. Users with green circle around their picture have seen them all.

Real-time chat

In real-time chat mode, all of the users included in a single conversation can exchange messages. The ones that are currently not active will get a message notification.
Setup $chatRefreshRate in inc_main.php for new messages appending time interval.



MagicApps keeps track of all activities inside the App.

Using the smartupdater plugin, MagicApps alerts you when there is something new. All of the notifications are in the top right corner. Keep track of your Messages, Notifications and Tasks the easy way.

Setup $nNotificationMessageRefresh, $nNotificationAlertRefresh, $nTaskAlertRefresh in inc_main.php for messages, notifications and tasks refreshing time interval.



MagicApps is unique integrated software package, intended to use by You (as new Apps developer) and Your End Users (as App Users). MagicApps will hide from You all technology complexities and give You extreme productivity in new Apps development, so You can focus only to delivering the business benefits to Your User.

MagicApps use metadata tehnology: complete Apps are stored in central repository (database). With AppBuilder You will create new Apps or modify existing App - but with no coding. All You have to do is just setting properties. AppGenerator will serve those Apps to end Users on the fly with superb performances.

Because metadata development is code-free, it extremely reduces development time by eliminating developer errors and by saving redundant steps.

Application Market is unique and powerful concept here in MagicApps: It is collection of all "User-type" Apps. It allows User to review Apps (every App has own "page") and install&uninstall every App. App is installed into User profile, so every User can install and use only needed Apps.
AppMarket will became more important in forecoming versions of MagicApps, with more and more included User Apps!

MagicApps includes 12 User-Apps, 1 Admin-App and 1 System App.
With included AppBuilder You can edit all of this Apps with no-coding (so consider this Apps as Application Templates.) You can also create unlimited number of new powerful Apps, with no-coding of course. Easy and extreme fast.



Application Generator is tool included in MagicApps. Once new App is created by AppBuilder, You can run this App. And the magic of "run" is in AppGenerator. This is the common engine of all Apps and guarantees superb App performances and great User experience.

MagicApps use metadata tehnology: complete Apps are stored in central repository (database).

AppBuilder is tool for creating new App or editing existing App.

MagicApps use metadata tehnology: complete Apps are stored in central repository (database). With AppBuilder You will create new Apps or modify existing App - with no coding. All You have to do is just setting properties. Then AppGenerator will serve those Apps to end Users on the fly with superb performances.

Create new Application - AppWizard
AppWizard will create new table (in current DB) with default mandatory fields. You can extend this structure later.
AppWizard will create 3 basic Objects: Browse, Form and Menu. Those Objects will be linked properly. You can extend this App later in unlimited way.
Note: You can find complete code of default AppWizard in ip_after_insert_app.php

Create New Object - ObjectWizard
ObjectWizard will create new table (in current DB) with default mandatory fields. You can extend this structure later.
ObjectWizard will create 2 linked Objects: Browse and Form. Those Object will be part of current App. Those Objects will also be added into App Menu Object.
Note: You can find complete code of default ObjectWizard in ip_after_insert_obj.php
Tip: If You need to create new single Object, just Copy existing Object into new one (use "Copy" from Object row toolbar).


Note: SysAdmin has privilege to run AppBuilder
Note: SysAdmin privilege is on-screen button
Note: AppBuilder is made as one of Apps in MagicApps package (App ID#1 in metadata repository :)

Note: Here is AppBuilder video demo


Typical App consists of 3 Objects:

  • Browse
  • Form
  • Menu
Note: App can have more Objects, there is no any limitation.

App record has 3 possible statuses:
  • 0 = Regular active record (default)
  • 1 = Trash (Recycle bin - deleted record)
  • 2 = Archive (Archived record)
Tip: Every table must have field dltd. This is record status. This field should be indexed.
Tip: There is no "delete". Instead, You should move record to Trash.
Tip: You can move completed or inactive or... records into Acrhive.

Default Browse Toolbar:
  • Insert
  • Filter
  • BrowseActive
  • BrowseTrash
  • BrowseArchive

Default Row Toolbar:
  • View
  • Edit
  • Copy
  • Archive
  • Trash


Project Management - ESN Workspace
Project is, by default, ESN Workspace - AnyApp AnyRecord can be linked with specific Project (there is lookup to Project from every App). In Main menu there is Project menu with links to Project Stream with all Project details. This is great way to keep Project visible and Social (comments and likes in real time). This is fantastic Project management and collaboration solution.

Users and User Management
By default, there are four type of Users:
  • Regular
  • Admin
  • SysAdmin
  • Demo
Regular User has access to AppMarket and can install and use UserApps.
Admin User additionally can use AdminApps. Included is AdminApp Manage Users.
SysAdmin additionally can use SystemApps. Included is SystemApplication Application Builder.
Demo User can be Regular, Admin or SysAdmin User and can not save anything.

Communication Application - Stream
Every App can post messages to Stream. You have full control over this process by AppBuilder. You can define and format all those post messages.
Tip: To display (in Stream) uploaded pictures (by App) by default, use field names pic1, pic2, pic3
Tip: To display (in Stream) links to uploaded files (by App) by default, use field names doc1, doc2, doc3
Tip: To display (in Stream) attached links (by App) by default, use field names lnk1, lnk2, lnk3
Tip: To enable video player (in Stream) for uploaded video links (by App) by default, use field names vid1, vid2, vid3

To Search Apps from Stream: For every table, You can link one "Title", one "Description" and one "Tags" field with Stream. If linked, field content will be copied to Stream and searchable through Stream, with links from Stream to App. Use AppBuilder, look at any of Apps for detailed example.



There are 3 basic Types of Apps:

  • User App
    This is App for regular User. Only User Apps are listed in AppMarket and can be installed & uninstalled by User.
    There are 12 User Apps in AppMarket. You can easily create Your own new User Apps.
  • Admin App
    Admin Apps are available only to Admin Users. Admin User does not need to install Admin Apps - they are available by default in menu "Admin Apps". Admin App can't be uninstalled. Admin App is not part of AppMarket and is not available nor visible to regular Users.
    There is one Admin App included: "Manage Users". You can easily create Your own new Admin Apps.
  • System App
    System Apps are available only to SysAdmin Users. SysAdmin User does not need to install System Apps - they are available by default in menu "System Apps". System App can't be uninstalled. System App is not part of AppMarket and is not available nor visible to regular Users & Admin Users.
    There is one System App included: "Application Builder". You can easily create Your own new System Apps.

Application have few Objects. So App is Parent and Objects are Childs.

It is very simple: We have Browse, Form and Menu Objects. Browse and Form Objects are usually linked, examples: after Insert, Form is going to Browse; or You can select record in Browse Object and goto Edit Form Object...

  • Browse
    Browse Object consists of few Columns. It's easy to add new columns or edit existing Columns. Column can' be deleted, only moved to Trash.
    Browse Object is attached to Table in Database. Single Browse Column is linked to single Database Table Column.
    There is one extra column added by default to every Browse object: - displays icons of attached files, links, pics and vids.
    If Browse Object is linked to Stream, one more extra column is added:   - provides table row link to Stream.
    Default Toolbar: InsertNewRecord, FilterRecords, BrowseActiveRecords, BrowseTrash, BrowseArchive
    Setup Your $tableButtonsWithCaptions in inc_main.php
    Links to Form Object(s):
    Every Browse Object provides few links to Form Object(s) - for every Form Object mode:
    Insert, Copy, Edit, View, Filter; Also for 1:N and 1:N relations


  • Form
    Form Object consists of Tabs and Fields. It's easy to add new or edit existing Tabs and Fields. Tabs and Fields can' be deleted, only moved to Trash.
    Form Object has one or many Tabs (can't be without Tab). Form data entry is properly validated through all Tabs.
    Form Object is attached to Table in Database. Single Form Field is linked to single Database Table Field.
    Setup Your $tableButtonsWithCaptions in inc_main.php
    Links to Browse Object(s):
    Every Form Object provides few links to Browse Object(s):
    DefaultBrowse, BrowseAfterInsert



    Form Object can be added to "Quick Insert" top-right menu:
      


  • Menu
    Menu Object consists of Menu labels. There are two kind of menu labels:
    1. Link to Browse/Form Object
    2. Link to any URL (here You can link Your own scripts!)



Object have many Elements. So Object is Parent and Elements are Childs.

It is very simple: We have Column/Field, Tab and MenuLabel Elements. Browse Objects consist of Column/Fields Elements, Form Objects consist of Column/Fields and Tabs Elements, and Menu Object consists of MenuLabel Elements...

  • Column/Field
    Column on Browse Object is "Column/Field" Element.
    Dataentry Field on Form Object is "Column/Field" Element.

  • Tab
    Form Object has one or more Tab Elements. One Tab Element have to be "default" and is active when Form opens.

  • MenuLabel
    Menu Object consists of MenuLabel Elements. There are two kind of MenuLabel Elements:
    1. Link to Browse/Form Object
    2. Link to any URL (here You can link Your own scripts!)

It is very simple: We have Column/Field, Tab and MenuLabel Elements. Browse Objects consist of Column/Fields Elements, Form Objects consist of Column/Fields and Tabs Elements, and Menu Object consists of MenuLabel Elements...

  • Text
    Browse: for output text in column
    Form: for general text input field
     

  • Textarea
    Browse: Not implemented. Data entered by "Textarea" can be displayed in Browse column as "Text" type
    Form: input text in few rows


  • Wysiwyg
    Browse: Not implemented. Data entered by "Wysiwyg" can be displayed in Browse column as "Text" type
    Form: input rich formatted text in few rows


  • Numeric
    Browse: No need to use. Data entered as "Numeric" can be displayed in Browse column as "FormattedNumeric" or "Text" type
    Form: input numbers

  • Formatted numeric
    Browse: Data entered as "Numeric" can be displayed in Browse column as "Formatted numeric" or "Text" type
    Form: -

  • Date
    Browse: display date
    Form: input date, with date picker
    Setup Your $datePickerLang, $dateDisplayFormat and $firstDayOfWeek in inc_main.php


  • Time
    Browse: Not implemented. Data entered by "Time" can be displayed in Browse column as "Text" type
    Form: input time, with time picker
    Setup Your $timePicker24on and $timeDisplayFormat in inc_main.php


  • SelectList
    Browse: Not used. Data entered by "SelectList" can be displayed in Browse column as "Text" type
    Form: Select option, options defined in simple comma-sepparated list


  • RadioList
    Browse: Not used. Data entered by "RadioList" can be displayed in Browse column as "Text" type
    Form: Radio buttons, buttons defined in simple comma-sepparated list


  • SelectStatic
    Browse: Element will be decoded by "Detail value" and displayed as "Detail caption"
    Form: Select option, options defined as "Details" in details table (Detail value, Detail caption)

  • CheckBox
    Browse: If checked
    Form: use tinyint(1) or integer(1), 1=checked, 0=not


  • Select Lookup
    Browse: Element will be decoded as defined in Element "Lookup" properties
    Form: Select option, options defined in another Table
    Note: Label can be link to BrowseObject of Lookup table
     

  • AutoComplete Lookup
    Browse: Element will be decoded as defined in Element "Lookup" properties
    Form: Auto complete (search by typing), options defined in another Table
    Note: Label can be link to BrowseObject of Lookup table
    Note: Chained Lookup is supported - second level lookup (Contact) with first level as parent filter (Customer)




  • File
    Browse: Element will be displayed as clickable link to file
    Form: standard file upload
    Supported: pdf, doc, docx, xls, xlsx, ppt, pptx, zip
    Upload path: $mPathDoc in inc_main.php - default is "upl/doc"
    Filesize limit: $mMaxDocHeavy in inc_main.php - default is 10MB

  • Picture
    Browse: will be displayed as clickable thumbnail, linked to fullsize picture, will open in modalbox
    Form: standard file upload
    Supported: jpg, png
    Upload path: $mPathPic, $mPathThumb in inc_main.php - default "upl/pic", "upl/thumb"
    Filesize limit: $mMaxDocHeavy in inc_main.php - default is 6MB
    Resize to: $mPicWidth, $mThumbWidth - defaults are 1366, 160

  • Video
    Browse: will be displayed as clickable icon linked to video player, will open in modalbox
    Form: enter URL (link) to video, enter as Textarea type (this is not video file upload!)
    Supported sources: YouTube, Vimeo, ...

  • Email
    Browse: will be displayed as clickable mailto link
    Form: enter valid email address


  • URL
    Browse: will be displayed as clickable http link
    Form: enter valid URL


  • Tags
    Browse: Not supported. Data entered by "Tags" can be displayed in Browse column as "Text" type
    Form: Enter as many tags you need. Use "text" field in db.table for storage


  • Profile picture
    Browse: Will display User's profile picture, based on User ID value in column
    Form: Not supported, but use Stamp User as method for storing User ID to any db.table


  • Progress bar
    Browse: will display progress bar and numeric percentage 0-100%. Data source can be any column with num values 0-100
    Form: Not supported. To enter data, use "Numeric" type, set Min and Max ranges (0 and 100)


  • Password
    Browse: will display "*******"
    Form: regular text field input, with default validation (min lenghth=8 chars)

  • Function
    Browse: Will display result of Your function! Very powerful!
    Form: Not supported
    Note: Fn call: PHP call_user_func($varFunction, 'argument1', $argument2, ...)
    Note: auto attached two arguments: $linkID and $PKvalue (from Browse table row)
    Note: use only Function name (without brackets and arguments)
    Example: column "App Icon" in Application Builder: function fGiveMeAppIconBig in inc_lib.php


  • Stamp User
    Browse: Not supported. To display "Stamp User" (User ID) in Browse, use Profile picture type
    Form: Will save User ID (current logged User)
    Note: Many examples included (who created record, who was lastupdated record)
    Note: non-visible form element

  • AutoUpdate
    Browse: Not supported
    Form: Will save any value (or MySQL function result) in specified field.
    Note: Be careful to not break the final SQL INSERT/UPDATE!
    Note: non-visible form element
    Example: to store current Datetime in spec field, can use AutoUpdate with MySQL function NOW()

  • AutoUpdate DetailKey in 1:N
    Browse: Not supported
    Form: Will save Parent Primary key value in Child record, for 1:N relation (Parent-Child)
    Note: only for 1:N situations (Parent-Child)
    Note: non-visible form element
    Example: Application Builder itself, 4-level deep 1:N Forms (Apps-Objects-Elements-Details)

Element may have few Details. So Element is Parent and Details are Childs.
Details are using as lookup values for SelectStatic type

Browse: To display data entered as LookupStatic-Details, use also "SelectStatic" and define Details again.
Form: Use and define Details for SelectStatic type (Lookup)

MagicApps is based on the AdminLTE template so it makes use of same plugins, plus some that we added. Added plugins are in '/plugins/ebiz/' folder. For documentation, updates or license information, please visit the provided links.

MagicApps supports the following browsers:

  • IE9+
  • Firefox (latest)
  • Safari (latest)
  • Chrome (latest)
  • Opera (latest)

Note: IE9 does not support transitions or animations. The template will function properly but it won't use animations/transitions on IE9.

MagicApps

MagicApps is a commercial product that can be purchased exclusively on CodeCanyon.
If you would like create your own WebApp using AdminLTE please visit its homepage.
AdminLTE is an open source project that is licensed under the MIT license.