- Home
- Workspace
- Development
- Adding custom modules
Adding custom modules
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 based on it. Ensure that all required components are present in the specified folders and that the relevant code lines have been added to the specified files, as 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 in which the lines are entered is critical. - The
ASC.Api.Sample.SampleApiis added to theweb\studio\ASC.Web.Studio\web.autofac.configfile like this:<component type="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 Visual Studio 2012, it can be generated viaTools->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 are output to 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 subsequently be available in the portal header drop-down menu or using the direct link: http://localhost:port/products/sample/default.aspx
Now you can create API for your own module following these instructions.