Blog

Cheered that I passed the midterms :) . Hats off to my mentor Matthew Lagoe , who has been patient with me, throughout literally helping me with tiny bits, and bearing my silly mistakes. Have learnt a lot under him.

The task is to include plugins into AMS for that i have to call the hooks of respective plugins. Every plugin must contains a .info file where all the information regarding that is plugin is stored in a format. The format is as follows:

---------------------------------------------------------------------------------------------------------------------------------

PluginName = {Name of the plugin }

Description = {Description of the plugin}

Version = {version of the plugin}

Type = {Type of plugin ( Automatic / Manual )}

PathFile = { Path of the index file to load using hooks}

//if plugin is a update then this option is must as well as change in the versioning

UpdateInfo = { what update is added in the plugin }

-----------------------------------------------------------------------------------------------------------------------------------

Now, when a plugin is installed and is activated , AMS start collecting hooks included in the $PluginName.php . Hooks works as follows:

-----------------------------------------------------------------------------------------------------------

//display hook

function $PluginName_hook_display(){

//to display in menu bar user option $plugin_display['menu_display'] = {what you want to display in menu bar}

****** it will automatically takes the PathFile from .info to use  with this display hook.

}

------------------------------------------------------------------------------------------------------------

We are thinking of more hooks that will help others to build plugins that supports Account Management System.

Also , Got a new instance withhttp://shub_evil.gsoc2014.ryzomcore.org. Thanks a lot to the RyzomCore team . This would be used for doing my dev-testing with larger data sets, and real time performance assessments.

My next task is to creating REST Api to interact plugins with the API's and will also , bring more options in the plugin functionalities.

As fifth week is come to end, as decided in the proposal i will start working on the REST API interface but due to some reasons i started my work late but to cover up i decided to first cover up maximum part of plugin interface this week .So , the task i completed this week is to update plugins which involves some interesting features which i have implemented by discussing with my mentor and other community members . The most confusing task is to understand the versioning of the plugins. So, mentor suggested me a link to semantic versioning to overcome this situation.

Semantic versioning involves following steps:

Given a version number MAJOR.MINOR.PATCH, increment the:

  1. MAJOR version when you make incompatible API changes,
  2. MINOR version when you add functionality in a backwards-compatible manner, and
  3. PATCH version when you make backwards-compatible bug fixes

So the update work start with creating a update templates which shows the available updates for the installed plugins , where the current verison , new version and update info will be mentioned. User have to upload the update package with proper versioning and details from the install plugins option . When the upload is complete , AMS check for the current version and version of update and add it to the update list with the respective plugin name. After testing it i found some situations like:

  1. if the .info file is not updated with update info field
  2. if the user try to install the update without modification in versioning.

After adding validation regarding the above situation , it looks fine. Now, next week i am going to work for the hook parts after discussing with mentor and reviewing my code i submitted.

The view of the update plugin template is added with the blog :

 

The Three  weeks of the coding period comes to end and a lot was there to learn. My first week task is to create  CRUD layer for the Ryzom Core Account Management System. Before getting hands dirty , I discussed the features  with my mentor , Matthew Lagoe who also, suggested me to keep track on the previous features and bugs. So, i started coding to implement CRUD layer, which is when expanded shows its basic functionalities as CREATE , READ , UPDATE , DELETE. These functions are used to interact with the database and act as a persistent storage layer in the application.I put some tests to check if the layer is working with the AMS and got fine results.

Now , my task for second week is to develop a view for the Account Management System where the list of plugins will  be given with the information regarding them. I added various options like add new plugin, delete plugin, check for updates, activate and deactivate a plugin. firstly i am little confused regarding the ways to install the plugins to work with the AMS but after discussion with my mentor i explored some links given by him and the confusion is no more to disturb . So, i started planning for the plugins installation functionality and discussion with my mentor on that gave me more confidence to start coding.

In the start of third week , i started coding for the installation part of the plugins . First step towards this is to create a template for plugin installation where we can upload the  plugin in zip format. Added some validation check for the package uploaded like format validation , Check for .info file in the plugin package after extraction. All the packages uploaded on the template must be extracted into plugin folder present in the AMS code base.After the end of third week this task is successfully completed and tested. But waiting for the reviews from the mentor so that the work on other functionalities will be performed.

Also I would love to hear some feedback from the rest members of the Ryzom Core team.

With the start of the fourth week, i started developing respective functionalities:

1. loading installed plugins within the plugins template

2. Deleting plugins form the AMS

3. Activating and Deactivating options in the template

In the first part, when the plugin template is accessed by the user it takes the info of the respective installed plugins and render it into the  template

In second part, when the user clicks on the delete plugin option the plugin is deleted form the database as well as the plugin folder in the AMS.

In third part, there are two options one with activate and other with deactivate functionality. When the user click on the deactivate plugin option it changes the status of the plugin to 'false' , means now plugin is deactivated and when the user clicks on the activate plugin it changes the status of the plugin to 'True', it is again taken into action when the work on the hooks need to be added.

In next week , the work on the update functionality for plugins will be worked till now waiting for mentor to review my code.

all the functionalities will be shown in the below images that i tested on my local server: