- Home
- Workspace
- Development
- Adding custom modules to ONLYOFFICE Workspace
Adding custom modules to ONLYOFFICE Workspace
Introduction
If you want to create your own modules for ONLYOFFICE and add them to ONLYOFFICE Workspace, now you can easily do that. Sample project is available here: https://github.com/ONLYOFFICE/CommunityServer/tree/master/web/studio/ASC.Web.Studio/Products/Sample
You can modify this sample or create a new custom module on its base. Make sure that all necessary components are available in the specified folders and certain code lines are added to the specified files as it is described below.
How it works
- Get ONLYOFFICE Community Server from https://github.com/ONLYOFFICE/CommunityServer
- The
Sampleproject is available in theProductsfolder here:https://github.com/ONLYOFFICE/CommunityServer/tree/master/web/studio/ASC.Web.Studio/Products
- The
ASC.Api.Sampleis available in theASC.Apifolder here:https://github.com/ONLYOFFICE/CommunityServer/tree/master/module/ASC.Api
- The following code lines are added to the https://github.com/ONLYOFFICE/CommunityServer/blob/master/build/msbuild/build.proj file:
<!-- Sample --><ProjectToBuild Include="$(ASCDir)web\studio\ASC.Web.Studio\Products\Sample\ASC.Web.Sample.csproj"/>and
<ProjectToBuild Include="$(ASCDir)module\ASC.Api\ASC.Api.Sample\ASC.Api.Sample.csproj"/>You can also see other existing projects to find out where these lines should be added.
Please note! The order you type in the lines is very important. - The
ASC.Api.Sample.SampleApiis added to theweb\studio\ASC.Web.Studio\web.autofac.configfile like this:<componenttype="ASC.Api.Sample.SampleApi, ASC.Api.Sample"service="ASC.Api.Interfaces.IApiEntryPoint, ASC.Api"name="sample"/> - The
Build.batfile can be run here:https://github.com/ONLYOFFICE/CommunityServer/blob/master/build/Build.bat
How to create your own module for ONLYOFFICE
- Create an ASP.NET Web Application (ASC.Web.Sample) project and put it to the
...web\studio\ASC.Web.Studio\Products\Samplefolder.IMPORTANT!!! The output dll file name must be "ASC.Web.*.dll". - Connect the required references from
...\web\studio\ASC.Web.Studio\bin\:ASC.Common.dll ASC.Core.Common.dll ASC.Data.Storage.dll ASC.Web.Core.dll ASC.Web.Studio.dll - Implement the
IProductinterface in theProductEntryPoint.csfile.IMPORTANT!!! The ProductID must be unique Guid (in VS2012 it is generated asTOOLS->GUID->New GUID) - Add the following lines to the
AssemblyInfo.csfile:[assembly: Product(typeof(ASC.Web.Sample.Configuration.ProductEntryPoint))] - Inherit the Master from
web\studio\ASC.Web.Studio\Masters\BaseTemplate.master - Set the output path in the project properties like this:
<OutputPath>..\..\bin\</OutputPath>so that the builds were created at the
web\studio\ASC.Web.Studio\binfolder. - The project can be built manually or using the builder. For the latter add the following lines to the
build\msbuild\build.projfile:<ProjectToBuild Include="$(ASCDir)web\studio\ASC.Web.Studio\Products\Sample\ASC.Web.Sample.csproj"/>and run the
build\Build.batfile. - After the build, run the website at the
localhost:portaddress, go to the "Modules & Tools" Settings page (http://localhost:port/management.aspx?type=2) and enable the new Sample module. It will be available in the portal header drop-down menu afterwards or using the direct link: http://localhost:port/products/sample/default.aspx
Now you can create API for your own module following these instructions.