Giter Club home page Giter Club logo

sitefinity-admin-app-extensions's Introduction

Sitefinity CMS Admin App extensions development kit with samples

Table of content

Overview

Leveraging the API-first approach of the Admin App, you can extend and add functionality, for example, in the Actions menu, in the grid, or in editing mode for content items. This repository contains everything you need to develop your extensions. The included examples demonstrate the main extensibility points of the API.

You can extend the Admin App API independently of the Sitefinity CMS in any IDE that you work with, for example Visual Studio Code, WebStorm, Notepad++ and so on. Thus, you can develop and test your extended functionality against multiple Sitefinity CMS environments, local or external. Once finished, you can plug in your new functionality by producing a bundle and deploying it to your project.

NOTE: The samples in this repository are supported from Sitefinity version 11.0.6700.0 and above.

Prerequisites

Install the Node.js and npm. For more information, see Installing node. Recomended node version is v16 LTS.

Quick start

  1. Clone or download the repository:

    git clone https://github.com/Sitefinity/sitefinity-admin-app-extensions --recurse-submodules
  2. Checkout the tag that is equal to your Sitefinity version:

git checkout {Sitefinity version}

For example:

```shell
git checkout 13.3.7600.0
```

Note: If you are not sure what is the version of your Sitefinity instance go to *Administration => Version & Licensing*. There you will find it as *Product file version*
  1. Update the samples submodule folder:

    git submodule update --init --recursive
  2. Install the necessary npm packages by executing the following command in the repository root folder:

npm install

NOTE: If you are using an older/newer than the recommended version of node/npm it is possible to encounter errors when executing the command. In such case you can try executing the following: npm install -f

**NOTE:** If you are using an older/newer than the recommended version of node/npm it is possible to encounter errors when executing the command.
In such case you can try executing the following: `npm install -f`
  1. Start the development server by executing the following command:
npm start
  1. When you are done developing execute the following command:
npm run build

As a result, a JavaScript file (sample.extensions.bundle.js) is generated in the dist folder.

  1. Register your extensions with the Admin App by uploading the file sample.extensions.bundle.js in the adminapp subfolder of the Sitefinity CMS web application and then restart your Sitefinity CMS instance. You can rename the file to anything as long as you keep to the pattern {{ bundle-name }}.extensions.bundle.js.

Configure Sitefinity CMS for development of custom extensions

To enable Sitefinity CMS to recognize and allow working with the Admin App, you need to configure the following:

STS configuration using Default authentication protocol

  1. Navigate to Administration -> Settings -> Advanced -> Security.

  2. Under AccessControlAllowOrigin, enter the URL of the development server of the Admin App Extensibility SDK or *. Default value is http://localhost:3000.

  3. Navigate to Administration -> Settings -> Advanced -> Authentication -> OAuthServer -> AuthorizedClients.

  4. Click Create new. For ClientId enter sitefinity, leave Secret blank.

  5. Under RedirectUrls, click the Create new button. Enter http://localhost:3000/auth/oauth/sign-in

Web service configuration

  1. Navigate to Administration -> Settings -> Advanced -> WebServices -> Routes -> Sitefinity -> services -> system -> Access Control Allow Origin (CORS)
  2. Enter the URL of the development server of the Admin App Extensibility SDK. The default value is http://localhost:3000
  3. Save your changes.

The Admin App is now served on http://localhost:3000. When you first open the URL, you are prompted to configure the Sitefinity CMS instance you are working with. In the URL field, enter the instance details and then save the configuration. You can later change the configuration by navigating to config. Once you setup the Sitefinity CMS instance, the server becomes in watch mode and automatically re-compiles and serves any newly created files.

Sitefinity compatibility

We are doing our best to keep extensions packages future proof, so that they will work with future versions of Sitefinity. This way you can upgrade your Sitefinity instance without having to upgrade and rebuild your extensions.

However sometimes there are breaking changes in the underlying frameworks (Angular, Webpack) that we cannot handle in other way but to also declare a breaking change in the Admin App extensions. In such cases you would need to update the repo with the version tag corresponding to your Sitefinity host version and rebuild your extensions.

NOTE: We always recommend to update and rebuild your extensions when upgrading Sitefinity to benefit from the latest improvements.

Breaking changes history

  • With the release of Sitefinity CMS 13.1 due to an Angular v9 upgrade and the migration of the extensions project to Angular CLI. More info can be found here

  • With the release of Sitefinity CMS 13.3 due to the name change of one of our dependencies (from "sitefinity-adminapp-sdk" to "@progress/sitefinity-adminapp-sdk").

Development and extensibility

With the Admin App Extensibility API, you can customize the Sitefinity CMS backend look and feel without a complex set of tooling, such as Visual Studio, IIS, or .NET framework. The Admin App and the Extensibility API are based on Angular and Typescript and the extensibility development is simple and intuitive, leveraging Angular's dependency injection (DI) mechanism and the architecture for writing NgModules. Working with the Extensibility API resembles the straightforward code workflow of writing an Angular application.

NgModules

You use the __extensions_index.ts file as an entry point for extending the Admin App. In that file you add the ngModules for the extensions that you have built, for example:

import { GridExtenderModule } from "./grid-extender";
import { SitefinityExtensionStore } from "@progress/sitefinity-adminapp-sdk/app/api/v1";

declare var sitefinityExtensionsStore: SitefinityExtensionStore;

sitefinityExtensionsStore.addExtensionModule(GridExtenderModule);

You can not only plug in to existing code but also write your own application-specific UI code. For example, you can register a route named /print-preview and then either navigate to it directly, or from a custom command in the Actions menu. We are referring to our print-preview sample, which shows how to register a command in the command menus, create a custom Angular component, and register a custom route on which the component will be loaded, in this case when the command is triggered. You can find the sample here.

Dependency injection mechanism

The extensibility API leverages Angular DI mechanism via InjectionTokens and ClassProviders. The multi property of the class provider interface allows for multiple references to the same token. The Extensibility API endpoints use the multi property of the ClassProviders, so that multiple instances of the providers can coexist within the same bundle.

Access the OData services

You can make HTTP calls to the Sitefinity CMS OData services via the Angular HttpClient. When making the request, use the HTTP_PREFIX constant, so that the Admin App can automatically detect this is a request to Sitefinity CMS and add the required authentication data to it.

Lets say you would like to get all the news items from Sitefinity, the URL that the Admin App would request is http://my.sitefinity.site/sf/system/newsitems, and since this request is to the backend-only services it must contain some service information in order to authenticate - this is all handled behind the scenes with the help of the HTTP_PREFIX.

Example:

const url = `${HTTP_PREFIX}/sf/system/newsitems`;
this.http.get(url).subscribe(response => { /* do work */ });

NOTE: More information on the OData web services is available in Sitefinity's documentation. Please bear in mind that the documentation focuses more on the frontend use cases of the services, this being said the differences between the frontend and backend services is the type of access they require and the URL segments. The backend OData services require an authenticated Sitefinity backend user to access them and are located on the URL {{ domain }}/sf/system/, whereas the frontend services are located {{ domain }}/api/{{ service-name }}. While it is technically possible to use the frontend services in the backend, we strongly advice against this.

Debugging

To start debugging, execute the following command: npm start

The command will start the webpack development server and will host the Admin App alongside the compiled extensions under http://localhost:3000. If you wish to debug the application simply open the developer tools on your browser and search for your code as with any regular Angular app. If you would like some tips on how to do so please see this post from our blog.

NOTE: In case there are any runtime errors resulting from the output bundle, they are displayed in the console once the Admin App has loaded. If the errors are critical, the extensions are not loaded and the Admin App will attempt to continue functioning normally.

Deployment

Once you are done with the backend customizations and development:

  1. Copy the output bundle from the dist folder.

    NOTE: You can change the name of the sample.extensions.bundle.js file to any other name, for example, {{ bundle-name }}.extensions.bundle.js

  2. Paste the bundle in the /adminapp folder in the Sitefinity CMS project directory.

  3. Restart the Sitefinity CMS application, so that all files are processed.

RESULT: Next time you open Sitefinity CMS your customizations are visible in the backend.

Minification

To build a minified version of extensions, run the command npm run build:prod.

NOTE: Minification is supported by versions of Sitefinity >= 11.1

Multiple bundles support

After you execute the npm run build command, you get as an output the sample.extensions.bundle file. This file is a single bundle that contains a specific piece of functionality. With the Admin App, however, you can support more than one extensions bundle. This is handy when you need to compile two different types of functionalities and distribute them separately. For example, the folder structure in Admin App folder may look like the following:

  • sample.extensions.bundle.js
  • my-custom-code.extensions.bundle.js
  • editor-power-tools.extensions.bundle.js

IMPORTANT: You must follow the naming convention: {{ bundle-name }}.extensions.bundle.js NOTE: the source map files {{ bundle-name }}.extensions.bundle.js.map are used only when developing the bundle, deploying to the Sitefinity site will have no effect.

Extensibility endpoints

The Admin App provides you with several extensibility points for plugging your functionality in the interface. You can find more details about the API we provide in the API documentation.

Take a look at the following overview of the Admin App extension samples we provide, as well as short descriptions and, where relevant, links to more detailed explanations about how to use each sample. You can also check out the high level Admin App extensibility overview in the Sitefinity CMS documentation.

  • Add custom commands - You can register a custom command in the grid, Bulk menu, Actions menu of an item, etc. and trigger some custom logic upon command execution.

  • Remove default commands - You can remove one or more of the default commands.

  • Custom field - When in content editing mode, editors can modify content properties and add content relations via dedicated fields in the UI. You can replace one of the default fields with a custom one and also implement a custom visualization for the field you create.

  • Fields binding - Sometimes when updating a field you may need to change another field's value, settings, visibility, etc. You can create a binding between two or more fields and achieve the described behavior by creating a simple service that will handle those changes.

  • Custom grid - You can add custom columns in the grid that show more information about the specific data item, for example related data or media, or any other kind of information, like data from external systems. You can also remove some of the existing columns.

  • Custom content editor - When content editors edit their content in HTML mode, they can benefit from the Admin App Kendo UI editor that provides them with relevant HTML-editing features. On top of the out-of-the-box contextual toolsets, you can add a custom video selector for Sitefinity CMS content.

  • Custom dialogs in the grid and in editing mode - When in edit mode or when browsing items in the grid, you can implement custom dialogs to be displayed to the user. You do this via the SelectorService and the OpenDialog method. The videos toolbar item extension provides an example how to implement custom dialogs by using the SelectorService.

  • Custom notifications - Often when the user executes an action he has to be notified somehow about the result of his action. In such cases you have the ability to publish custom notifications in the application. This can be achieved by using the NotificationService and its publishBasicNotification method. The method accepts an object of type NotificationInfo that contains some configuration options about the notification's message, look, visibility duration, placement, etc. The notificaton command extension provides an example how to create your own custom notifictions by using the NotificationService.

  • Custom Widget Editor - With this AdminApp extensibility point, you can create your own custom widget designers and override the default auto generated designers.

  • Admin App custom theme - You can customize the appearance of the Admin App by modifying specific components of the user interface. For example, you can customize buttons’ color, background, and text, as well as other supplementary text on the UI.

  • Custom list components - This extension is used to replace a part of each item shown in the tree used throughout the AdminApp. Currently supported only for the related data functionality.

  • Custom system notifications icons - This extension is used to generate css class that can be used to style a system notification icon. If you have some custom system notifications you can use this extension to create your own icon, instead of using the default one. You can also use it to override the already available icons in the system. Find more information about system notifications here.

  • Custom DAM provider - This extension is used to implement custom DAM providers. This sample demonstrates how to override one of the DAM providers which comes out of the box with the AdminApp.

Modifications done in the Backend interface settings

Backend interface settings - Learn how to configure backend interface settings.

sitefinity-admin-app-extensions's People

Contributors

annix8 avatar belchevgb avatar bkirpiev avatar dechod avatar ekazakova avatar gebov avatar gpeshev1 avatar jenpeleva avatar jmeleshko avatar jordanilchev avatar kaloyanpetkov avatar kirilvandov avatar lina94 avatar mstratiev avatar nikistefanov avatar novkirishki avatar orlindraganov avatar p1ndl3sk1n avatar plazarova avatar sdimitrov89 avatar stefankoserkov avatar vassildinev avatar zdravka avatar zzareva avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sitefinity-admin-app-extensions's Issues

Single Related Data field in the column grid not displaying value

Hello,
This issue occurs only when you are working with projects that have been previously upgraded. It works correctly with new Sitefinity projects.
In our case, we have a content type with a related data field with Pages and in the grid we display this field as a column but it doesn't display any of the names of the pages and there are errors in the browser console.

image

image

We tried to reinstall admin app extensions following this Sitefinity post, but it didn't work.
https://knowledgebase.progress.com/articles/Article/AdminApp-How-to-reinstall-the-new-backend-experience

We are currently working with version 13.3.7600.

Any ideas on what could be causing this problem?

Thanks.

Issue with SEO and Open Graph fields (Title and Description)

Hello,
We are having a strange behavior with the SEO and Open Graph fields (Title and Description).
According to the Sitefinity documentation, these fields are filled out with the content of the first text field after the title field of the content item.
https://www.progress.com/documentation/sitefinity-cms/configure-meta-title-and-meta-description

This is behaving as the documentation says but when I click on Publish or Save as Draft, the values that were filled out are not saved in the database. It seems that the behavior described in the documentation is visual only, the problem with this is that the user would not be able to know if the value is already saved in the DB or not.

image

So we were wondering if you could change this behavior so that those values ​​are stored in the database when the user clicks Publish or Save as Draft; or if those fields have an empty value in the database, the values ​​that are populated are seen as in a placeholder format. For example:

image

Thanks.

Allow us to configure if an identifier grid column will redirect to detail view or children maintenance view

Hello,
We have received some feedback from some of our customers about the behavior of the identifier column link, where it is a bit confusing that in dynamic types which have children content types, the link is redirecting to the first child index view instead of redirecting to the item detail view. We think that no matter if the content type has children or not it should always redirect to the detail view because the "Contains" column already has the links to the child content types.
image

Can this behavior be configured somehow through the Admin App?

Thanks.

How to close a custom dialog?

We are creating a custom dialog where the user can select some items and then click the "Apply" button (This button is totally created by us / HTML and function (click)). When the user clicks this button, we are implementing a process. When this process is finished, we should close the dialog automatically.

This is the implementation of the custom dialog
image

Same as SELECTOR_SERVICE.openDialog(dialogData), is there a .closeDialog() method? How can we close the dialog?

Error when running nom start on master branch

Error when running nom start on master branch

ERROR in [at-loader] ./switch-text-direction/switch-text-direction.provider.ts:2:65
TS2305: Module '"/Users/sethcleaver/Projects/Sitefinity/sitefinity-admin-app-extensions/node_modules/progress-sitefinity-adminapp-sdk/app/api/v1/index"' has no exported member 'groupToolbarButtons'.

Dynamic Contents not displayed in Admin App in default

Hello,

First of all, I tried to checkout my Sitefinity version but it did not work (git checkout 11.2.6937.0). And then I have used the similar version and checkout was successful (git checkout 11.2.6900.0). I don't know if this is relevant with this but I've managed to connect Admin App (localhost:3000) to my SF instance (localhost:41517), I also managed to login to SF instance but when I click "Content" tab in the Admin app instance, I only see blank page instead of listing dynamic modules/contents. So auth operation is successful but there is still CORS issue which is blocking my connection. (I have already configured CORS settings on Sitefinity Settings and gave permission to localhost:3000).

I have an error on console as below. I'm not sure if this is related or not.

image

And my "Content" tab looks like below

image

We're using Sitefinity for couple of years and trying to enable Admin App.

Kind Regards,
Anil

Predefined values are not prefilled

In the pages and news custom fields - there's the ability to add predefined value for the custom fields. This value is not automatically set. Is there a way to extend the admin to support it?

Display Related docs and videos counts to the List view

Hello,
We want to be able to add the related documents and videos counts to the List view (just like the images and related data counts), but these fields are not available in Backend screens tweaks.

image

Can you habilitate these fields in the backend screen tweaks?

Thanks.

Allow us to edit the ordinal for custom grid columns

Hello,

This is not an issue but more of a feature request.
In our Sitefinity project we have several custom grid columns in our content types maintenances and we noticed that all of those columns are located at the end of the grid.
image

As you can see in the image the Product Description is a custom grid and it is displayed as the last column but it would make more sense if this column was displayed next to the Product Number, so my question is: Is there a way in which we can modify the order of these custom grid columns?

Thanks.

When clicking on a page to edit during development takes you to host server

When running the admin app in development mode locally, if I navigate to the pages view and click on a page to edit in order to test content editor extensions, I'm taken to the edit page on the host Sitefinity site and not within the local environment. Modifying the edit page url to change the host/port to match the local development environment results in a page not found error.

I've followed the instructions and configured Sitefinity as described and all other functionality works.

This result in being unable to easily test content editor extensions

Issue in Content Types that have children content types regarding columns: Author, Last Modified & Created on

Hello,
We found an issue in Content Types that have children content types.
The issue is that columns “Author”, “Last Modified” and “Created on” columns are not displayed even if they are selected in the Backend screens tweaks.

image

Content types that do not have children content types show those columns so we were wondering if they could be displayed for the parent ones as well.

Thanks.

Backend validation is impossible

Scenario: As a developer I want to intercept and cancel page publication if certain fields are not set. For example - I want to ensure SEO properties such as keywords and description are filled before allowing the user to validate the page.

I wasn't able to accomplish this using the new UI.
Further more - those fields are not initially visible on page creation, so the user will have to go:

  1. Create page
  2. Fill basic properties
  3. Go to page editor
  4. Title and Properties
  5. Publish

Is there a way to intercept and extend pages?
Sitefinity verison is 12.7200.0

Forgot to mention - otherwise as a user I like the new UI and find a lot of the tasks easier to do. Especially in-content search!

Dynamic Modules: Identifier field header in grid view cannot be changed by editing the label property

In the grid view where we visualize the content item list for a specific content type, we would like to edit the header name for every column (Image: GridView.png). We found out that we can do this by changing the "Label" property of the field that we want to display in the grid but this is not working for the field that is set as Identifier (Image: LabelProperty.png).

We change the label to "Long Item Number" but in the grid this change is not being applied and instead is displaying the name of the field "LongItemNumber".

Could this be adjusted so it works properly for the field set as Identifier?

Thanks.

LabelProperty

GridView

TextArea support for Custom Fields Provider

I've attempted to use the custom fields provider sample but applied to a Long Text (non-Html) instead of a Short Text field.

Below are the modifications I've made to the sample, but the field shows up to content editors as an <input> element rather than the expected <textarea>.

Change to custom-fields-provider.ts
const customInputKey: FieldData = { fieldName: "Summary", fieldType: FieldTypes.textArea, typeName: "events" };

Change to custom-field-write-component.html:
<sf-input [name]="settings.key" [look]="settings.look" [type]="textarea" [placeholder]="settings.placeholder" [recommendedCharacters]="settings.recommendedCharacters" #inputField ngDefaultControl [(ngModel)]="value" (onBlur)="onBlur()" (onFocus)="onFocus()"> </sf-input>

Filtering on related data [tree node] field

Hi,

there is no provision in related data [tree node] control to filter the component data as per our need, if we try to modify it is not working , do we have any solution or alternative to use a filter on ComponentData of the getComponentData of the TreeNodeComponentProvider in related data.

Dynamic content selector in the content editor

Hi,
I want to add a new toolbar button that opens a dynamic content selector from specified type and select an item that needs to be processed afterwards.
Currently, the SelectorService supports only Image and Video library selector. I see there is an additional openDialog method but I cannot find any API documentation of how to use it.
So what is the recommended way of adding a dynamic content selector in the editor toolbar?

Extending Existing Functionality

Is the code for existing Iris functionality available so that we can extend existing toolbar components such as Formatting or adding a custom field to the Image/Link embed, if not when will it be available?

Keep search filters after edit content item

Hello,
We noticed that when a search filter is applied and then you edit one of the content items and then click on the "All Items" link to return to the grid, the search filter is lost.

image

Is there a way to keep the search filters after clicking on that link?

Thanks.

401 Unauthorized request after updating a page in a new route

This issue can be reproduced using one of the AdminApp samples: add-custom-commands -> Print preview

  1. Create a command and register a new path (example: 'print preview').
  2. When user enters to this new route the custom component calls a Sitefinity Web Service to display information

This scenario works as expected when the user is in the grid view, clicks on the dots, clicks on Print preview option, navigates to the new path and views the information. But if the user is in the new path, he types F5 (keyboard) or updates the browser, the next time the Sitefinity Web Service is called the request responds with: 401 Unauthorized

image

I reviewed both requests and noticed a difference: the unauthorized request has the authorization property (in the request header) as empty

An example that manipulates multiple fields markup

As a developer I want to be able to manipulate multiple fields (manage forest rather than the trees) markup. For example - I want to be able to add additional markup to all fields that are required.

filtration on master detail related data in module builder to extend

Hi,

We have a scenario where after selecting master data , automatically detail related data should get filter in sitefinity backend screen of module builder. can this be achieved or have achieved in past.. here is the example below , so classification code is selected as 'EX', after selection automatically dealer list should show only those dealers which are of 'EX' and not all dealers.

image

Thanks

Translation actions in Edit view remain visible even when all content type fields are not localizable

When you create a content type with all fields as "No Localizable" the translation conlumn in the List view does not displayed (is is perfect and as expected)
image

But the translation action remains visible.
image

Also, we tried to remove the "Translations" column with getColumnsToRemove() and we experienced the same situation: in List or Grid view, the column is removed but in edit view the translation actions remain visible.

NOTIFICATION_SERVICE triggers an error in Sitefinity Backend

When you inject NOTIFICATION_SERVICE inside a component, the notification component works as expected in AdminApp (running 'npm start' command)

image

But when you run 'npm run build' and put the sample.extensions.bundle.js and sample.extensions.bundle.js.map files in the Sitefinity AdminApp folder, you get a console error and the component is not rendered.

This is the console error
image

Edit Related Data items from the Related Data modal summary in grid view

Hello,
We want to be able to edit Related Data from the list view.
In the list view we added a column for related data and when the user clicks on it, it shows a modal with the related items:
Column with related data:
image

Modal showing related items:
image

Is it possible to enable the edit options in this modal as it is in the detail view?
For example like this:
image

Thanks.

Enable Multiple Selection using the Shift key in List view

We get feedback from our customers about multiple selection in list view. They say that if we can enable a multiple selection using the shift key.

They want to mark a record, press the shift key, and mark another record; all records between the first and last must be marked as selected.

image

Show/Hide the admin app customizations to a specific module

Hi,

We are using the latest version of sitefinity for our client website. We need to make some customizations to content block. We achieved those using the admin app extension that was provided in one of the knowledge base.

Now the extensions that we have created is being available in every location where we have the content block. We made the extension specifically for the news area, but when we drop the content block to page, we are able to see the extension that we have created even in that location. Can you help us on how can we customize it so that the extension is available only for news/ custom module that we have created.

Publishing a large number of content items gets stuck

Hello,
In our project, we have a Products module that has a large number of content items (> 137000) and whenever we select all of them to be published, we notice that a lot of requests are executed.

image

The first set of requests that are executed are 'GET' requests which retrieve the Ids of all content items to be published.
The second set of requests are POST and those are the ones that publish the content items one at a time.

The behavior that we are experiencing is that these requests get slower and slower over time.
After a few thousand requests are executed, we noticed that fewer requests are executed by second.
We even had a timeout and the publishing process was canceled, we believe that this happened because of the number of requests that were being executed.

We wanted to ask you if there was a better way to publish a large number of content items without having to execute so many requests.

Thanks.

Can we have editor-extender for mailto option?

Hi,

We would like to insert 'mailto' option for the selected word in text editor (like selecting word and making it bold/italic etc.)
When user select any word in text editor, he will click on new toolbar icon 'mailto' which will open the another window with options like From, To, Subject, Body etc. text-boxes.
Once the user fill all the values in text-boxes and close the window, the selected word in text editor should decorate with mailto anchor tag.

Appreciate someones help or guidance on this.

Thank you.

All Items Selected flag on Bulk Commands not working correctly

Hello,

There is an issue with the flag that indicates if all content items were selected while executing a custom bulk command. The flag is set to true even though all content items are not selected.

image

How to replicate:

  • Select all content items. (At this moment the flag is set to true which is correct)
  • Unselect one of the content items and execute the command. (The flag should be set to false but it is still true)

image

Thanks.

Unable to test sample

After installing the sample and running it, the following error appears in the console: sample.extensions.bundle.js:1 Uncaught TypeError: (intermediate value)(intermediate value).push is not a function at sample.extensions.bundle.js:1

An example custom field that is registered depending on custom buisness logic

As a developer I need to be able to explicitly set the field type at dynamic content type level. For example - the old way was to pick a "Custom" for field when creating the field. This could be achieved partially by specifying the type and the field in the admin app extension but comes at a cost - each time I want to add a field with that selector - I will have to go to the admin app, add the type and field name there and re-build it. A configuration in Sitefinity that ties dynamic type and field name to a specific custom field + an endpoint to allow the admin app to fetch this information from Sitefinity could be a solution here?

Notification is hidden if there is an individual selection, List view

We have a problem using the service to display notifications when executing a list view command.

We are executing a list command (CommandsTarget.List) when the action finishes a notification is displayed, but if it is executed from this Actions button the notification is hidden behind the selection. Is there a way to clear that selection?

Step 1:
image

Step 2, The command finished performing the logic but the notification is not displayed:
image

Step 3, If the item is unchecked, the notification is visible:
image

Custom page field

As a developer, I would like to add be able to define fields to fetch from the sitefinity backend to display in the grid. For example: a page might be related to specific brands, so there's a custom flat-taxonomy-based field "brands" on page level.
The field appears in the metadata, but it's not fetched when the list of pages is displayed. How can I achieve this?

How to validate user permissions on custom components, commands, etc.?

We are working with Module Builder and creating a content type called Catalog. For Catalog, we hide the standard "Create" button and instead implement our "Create" button.

Our "Create" button opens a dialog and inserts a catalog item using the Sitefinity web services API.
Now, we need to validate the user permissions in this creation process.
For example: We only want to allow administrator users to create catalogs.

How can we integrate user permission validations into our custom components, commands, etc.?

Content Editor Extender: name for new custom action

Hello,

We added a new custom toolbar for the HTML editor and we noticed that when the HTML editor is displayed in responsive mode, the icons are displayed in the actions menu. For example:

image

We also noticed that our custom item toolbar is displaying the name defined in the toolbar-items.provider.ts in the menu options:

image

image

The problem is that we would like the label to be "SmarterCommerce Plugins" and if we change the name in the provider.ts the icon toolbar stops working as expected:

image

The icon is no longer displayed and the toolbar does not display our custom toolbar items.

We think that the reason is that admin app uses the name property to create classes for the components and because our name has spaces it no longer works:

image

So we were wondering if you could provide a property "Title" so that we can configure the name that the toolbar will display in the options menu while in responsive mode.

Thanks in advance,

Dehivis.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.