Image widget

The sfImageField directive enables you to select and display an image from the existing libraries in your website. In addition, you can also use this directive to upload an image to a library.

After you select an image, the default template lists information about its base properties such as type, size and upload date. To change the selected image, using the image selector and you can also edit the image's properties. For more information, see Image selector.

You can use the directive in the frontend, as well as in the backend, for example, on a page, as well as in a widget designer.

The sfImageField is a directive with an isolated scope that is defined in a module with the same name: sfImageField. For more information, see AngularJs Isolated scope.

The following image is an example of an image field:

Image field

Image field attributes

The sfImageField directive exposes the following attributes:

Attribute Description
Accepts a scope variable that holds the selected id of the image.
Accepts a scope variable that holds the selected image item.
Accepts a provider name to use when retrieving the items to display.
Allows you to override the template of the image field.
Specifies the assembly where the template of the image field is located.
Specifies if the image selector will open initially if no image is bound.

Specifies the permissions that allow all users to access this selector. The options are:

  • sf-media-settings="@Telerik.Sitefinity.Frontend.Mvc.Helpers.SettingsHelpers.GetMediaSettings("Image")"
  • sf-media-settings="@Telerik.Sitefinity.Frontend.Mvc.Helpers.SettingsHelpers.GetMediaSettings("Document")"
  • sf-media-settings="@Telerik.Sitefinity.Frontend.Mvc.Helpers.SettingsHelpers.GetMediaSettings("Video")"

Add the image field directive

The following example demonstrates how to add a image field directive in a widget designer's view.

To enable AngularJs to link the sfImageField directive in your custom designer view, you must load the script of the directive and add a dependency to the module:

  1. Sitefinity CMS automatically registers the scripts you need and, if no other designer view with explicitly set priority exists, sets your designer view priority 1. In case you need to have full control over the scripts that are loaded or you want to set custom priority, you can alternatively create your own DesignerView.YourView.json file. If you have a JSON file that matches the convention (even if empty), this automatic scripts registration will not occur. In your DesignerView.YourView.json file, add a scripts array. As a result, the file content should be similar to the following:
  2. Sitefinity CMS automatically finds all AngularJS modules you rely on and references the widget designer to them. In case you rely on custom AngularJS modules or have logic that needs an AngularJS controller, you can create your own designerview-<yourview>.js file. If you have a .js file that matches the convention (even if empty), this automatic modules referencing will not occur. In your designerview-yourview.js file, place the following code snippet:

    Since there is no selected image when the controller is initialize for the first time, the sf-auto-open-selector attribute in the code above opens an image selector. After you select an image, the image and its ID are stored in their respective scope variables: selectedImage and selectedImageId. The imageProvider variable holds the name of the provider from which image libraries are loaded.

    NOTE: The image selector can load images from different providers.


Was this article helpful?

Next article

Image gallery widget