== Flash Apps Developer API == === Introduction === Ray Base is a general and simplified Administration panel which gives the ability to manage widgets, from purchasing to setting up the widget functions for your site members. While Ray widgets make a site more usable, interesting and functional, for developers they introduce a rich new development environment. Widgets provide an excellent way to add functionality to an existing application. This means there are many opportunities for developers, whether creating new products, or adding market-differentiating value to an existing one. This document will help you to understand how you can create your own widget and which general steps, structure and folders the widget should include. === Understanding Widgets === Any application for a community site that works via Ray Base, uses Flash or any Desktop application file and may be installed/enabled/disabled via Ray Base is considered a Ray Widget. Ray Widgets can use development platforms, such as Flash for web applications or any Development Environment for desktop applications. Since Ray is a "Community Widget Suite" all widgets should be community-oriented and/or should provide communication and multimedia functionality to community site members. === Ray Architecture === '''*XML Server (XMLS)''' - set of methods that handle clients queries and return XML replies '''*Ray !MultiMedia Server (RMS)''' - red5 based multimedia server for live audio/video broadcasting, messaging etc. === Widget Architecture === Every widget is a package (folder) that contains a standard set of folders and files. The package name is the system name of this widget. It contains the following folders: '''app''' - applications (flash or desktop). '''data''' - any media files. You must have the "preview.jpg" file in this folder small icon of your widget with 130x130 px size. '''inc''' - contains the following files: '''actions.inc.php*''' - defines all server methods, called by your application. '''constants.inc.php*''' - contains your widget and all flash applications information. '''customFunctions.inc.php*''' - contains functions necessary for widget integration in a script. If it doesn't require any integratable functions this file should be empty. '''functions.inc.php*''' - contains any other functions that don't concern integration. '''header.inc.php*''' - contains any variables rarely or never reset, but necessary for widget work. '''xmlTemplates.inc.php*''' - contains XML-replies templates. '''install''' -contains files necessary for this widget installation - '''install.sql''' with database queries and '''install.xml''', containing installation algorithm. '''js''' - contains all javascript code necessary for this widget. '''langs''' - contains language files for this widget, if there are any. '''skins''' - contains skin files for this widget, if there are any. '''xml''' - contains additional xml-files for this widget, if there are any, and three necessary files: '''main.xml''', '''settings.xml''' and '''config.xml'''. Now that you have examined some basic theoretical definitions and structure we are moving forward [wiki:CreateWidget to the part telling us how to create your own Widget].