JSMA product
Overview
The JSMA product provides functionality for accessing and editing products.
What can JSMA product do for me?
You could use JSMA product to build a simplified product management interface for editors.
Index
Usage
writing data
Here is an example on how to write data to a JSMA product:
... product.addPreviewImage(file) // adds an image at the end of the list of preview images ...
reading data
Here is an example on how to read data from a JSMA product:
... var prodName = product.name(); ...
Methods
The JSMA product provides the following methods:
void product.addPreviewImage(file, [position])
Adds a preview image to the product.
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.addPreviewImage(file) // adds an image at the end of the list of preview images product.addPreviewImage(file, 0) // adds an image at the beginning of the list of preview images ...
Parameter file:fileParameter (required)
This can either be
- an upload (received via request.parameter('upload_parameter_name'))
- another JSMA file
- or a String
as the file content.
Parameter position:Int (optional)
An optional index to set the position within the list of preview images.
bool product.addToPortal(id)
Adds the product to a portal by ID.
Returns true or false, depending if the operation was successful.
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.addToPortal(1) // => true ...
Parameter id (required)
string product.category
Returns the category field of the product.
Example
... product.category // => 'A Category' ...
product product.clone(name)
Clones the product and returns the copy as a JSMA product.
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.clone() // => product ...
Parameter name: (optional)
int product.centPrice
Returns the product price in cents (integer)
Example
... product.centPrice // => 1995 ...
product.customPath
Returns the customPath field of the product.
Example
... product.customPath // => '/a-custom-path/to-a-product' ...
bool product.delete()
Marks a product as deleted.
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.delete() // => true ...
void product.deletePermanent()
Permanently deletes a product.
This function is deprecated!
Example
... product.deletePermanent() ...
string product.deliveryInformation
Returns the deliveryInformation field of the product.
Example
... product.deliveryInformation // => 'some delivery information' ...
string product.description
Returns the rendered description field of the product.
Example
... product.description // => 'some product description' ...
string product.descriptionUnprocessed
Returns the unprocessed content of the description field of the product.
Example
... product.descriptionUnprocessed // => 'description with renderable content' ...
string product.cacheKey
Returns a string that you can use in the fragment cache. This string will change whenever the product or one of its files is changed.
Example
... product.cacheKey # => "12589387317632578294" ...
product.flexAttributes()
Returns an array of the flex attributes of the product
Example
... function getCategoryConfiguratorFilter(product, parameters) { var result = {}; var flexAttributes = product.flexAttributes; for(var i=0;i<flexAttributes.length;i++) { var flexAttribute = flexAttributes[i]; if (/^category\./.test(flexAttribute)) { result[flexAttribute.substring(9)] = product.get(flexAttribute); } } return JSON.stringify(result); } ...
string product.format1
Returns the format1 field of the product.
Example
... product.format1 // => 'format1 content' ...
product.format2
Returns the format2 field of the product.
Example
... product.format2 // => 'format2 content' ...
string product.get(key)
Returns the value of key as string or null if no value is set under the key.
Example
... product.get(key) ...
Parameter key:string (required)
The key to be looked up in the flexAttributes of the product.
boolean product.has(key)
Returns a boolean value depending on whether key is present for a given product
Example
... product.has(key) ...
Parameter key:string (required)
The key to be checked in the flexAttributes of the product.
bool product.hasTemplate
Returns whether the product has a template associated
Example
... product.hasTemplate // => true ...
int product.id
Returns the id field of the product.
Example
... product.id ...
product.increment(key)
Increments the vale of a given key by one.
Example
... product.increment(key) ...
Parameter key:string (required)
The key to be incremented in the flexAttributes of the product.
bool product.isDeleted
Returns whether product is marked as deleted.
Example
... product.isDeleted // => false ...
bool product.isDirectDelivery
Returns whether product is a direct delivery product.
Example
... product.isDirectDelivery // => true ...
product.isInPortal
Returns whether the product is associated to the current portal.
Example
... product.isInPortal // => true ...
bool product.isOfflineEditable
Returns whether product is marked as offline editable.
This function is deprecated!
Example
... product.isOfflineEditable // => false ...
bool product.isOnlineEditable
Returns whether product is marked as online editable.
This function is deprecated!
Example
... product.isOnlineEditable // => true ...
bool product.isShopDelivery
Returns whether product is marked as shop delivery.
Example
... product.isShopDelivery // => false ...
string product.metaDescription
Returns the metaDescription field of the product.
Example
... product.metaDescription // => 'some meta description' ...
string product.metaKeywords
Returns the metaKeywords field of the product.
Example
... product.metaKeywords // => 'some keywords' ...
string product.metaTitle
Returns the metaTitle field of the product.
Example
... product.metaTitle ...
string product.name
Returns the name field of the product.
Example
... product.name // => 'the product name' ...
string product.name1
Returns the name1 field of the product.
Example
... product.name1 // => 'name1 content' ...
string product.name2
Returns the name1 field of the product.
Example
... product.name2 // => 'name2 content' ...
int product.originalCentPrice
Returns the original product price in cents (integer)
Example
... product.originalCentPrice // => 2495 ...
float product.originalPrice
Returns the originalPrice field of the product. (Streichpreis)
Example
... product.originalPrice // => 24.95 ...
int product.packageId
Returns the packageId field of a product
Example
... product.packageId // => 1 ...
string product.path
Returns the merged custom URI for a product.
Example
... product.path // => '/products/some-product' ...
int[] product.portalIds
Returns a list of portal ids.
Example
... product.portalIds // => [1, 2] ...
portal[] product.portals
Returns a list of JSMA portal to which the product is associated.
Example
... product.portals // => [portal0, portal1] ...
string[] product.previewImageIds
Returns a list of JSMA file uuids.
Example
... product.previewImageIds // => ['UUID_LIKE0', 'UUID_LIKE1'] ...
string[] product.previewImagePaths([max_width], [max_height])
Returns a list of the URIs to the associated previewImages. Optionally resized to a desired value.
Example
... product.previewImagePaths(64, 64) // => ['/media/path0.jpg', '/media/path1.jpg'] ...
Parameter max_width (optional)
An optional integer for the maximum width of the resized image.
Parameter max_height (optional)
An optional integer for the maximum height of the resized image.
file[] product.previewImages
Returns a list of JSMA file of the associated previewImages.
Example
... product.previewImages // => [file0, file1] ...
float product.price
Returns the product price.
Example
... product.price // => 9.95 ...
string product.printApiId
Returns the printApiId field of the product.
Example
... product.printApiId // => 'UUID_LIKE' ...
file product.productImage
Returns the product image as a JSMA file, if available.
Example
... product.productImage // => file anotherProduct.productImage // => null ...
string product.productImageId
Returns the uuid of the product image.
Example
... product.productImageId // => 'UUID_LIKE' ...
string product.productImagePath([max_width], [max_height])
Returns a URI for the product image. Optionally the image may be resized by setting the arguments for max_width and max_height.
Example
... product.productImagePath(64, 64) // => '/media/some-image-path.jpg' ...
Parameter max_width (optional)
An optional integer for the maximum width of the resized image.
Parameter max_height (optional)
An optional integer for the maximum height of the resized image.
product.remove(key)
Removes the key from the flexAttributes of the product
Example
... product.remove(key) ...
Parameter key:string (required)
The key to be removed from the flexAttributes of the order.
void product.removeFromPortal(id)
Removes the product from the portal specified by id.
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.removeFromPortal(1); ...
Parameter id (required)
void product.removePreviewImage(uuid)
Removes a preview image by uuid
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.removePreviewImage('UUID_LIKE'); ...
Parameter uuid (required)
product.set(key, value, [options])
Sets the value of a specified key for a given product.
This function is deprecated! Use update-function instead!
Example
... product.set(key, value, [options]) ...
Parameter key:string (required)
The key to be set in the flexAttributes of the product.
Parameter value:string (required)
The value to be set for the key
Parameter options (optional)
May have a key 'broadcastEvent':bool which determines whether the log message shows up in the websocket log view.
bool product.setDescription(value)
Updates the description with the desired value. Returns whether the update was successful.
This function is deprecated! Use update-function instead!
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.setDescription('new description') // => true ...
Parameter value (required)
bool product.setOriginalPrice(price)
Sets the product original price. Returns true or false depending on whether the operation was successful.
Example
... product.setOriginalPrice(1995) // => Original price will be 24.95 ...
Parameter int price (required)
The new original price in cents
bool product.setPrice(price)
Sets the product price. Returns true or false depending on whether the operation was successful.
Example
... product.setPrice(1995) // => Price will be 19.95 ...
Parameter int price (required)
The new price in cents
bool product.setProductImage(file)
Replaces or sets the product image. Returns true or false depending on whether the operation was successful.
This function is deprecated! Use update-function instead!
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.setProductImage(file) // => true ...
Parameter file file (required)
This may be either of
- an uploaded file (from parameter
- a JSMA file
- a string body
bool product.setShortDescription(value)
Sets the short description of the product. Returns whether the update was successful
This function is deprecated! Use update-function instead!
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.setShortDescription('new short description') // => true ...
Parameter value (required)
bool product.setTags(tags)
Sets the tags of the product to the desired value.
This function is deprecated! Use update-function instead!
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.setTags('some, tags'); // => true ...
Parameter tags (required)
A comma-separated list of tags.
bool product.setTemplateFile(file)
Sets the template file of the product.
This function is deprecated! Use update-function instead!
Slice aware
This entity is slice aware, which means that to use this facility:
- there must be a logged in user in the context of the execution
- this user must be currently within a slice
- this user must have the necessary privileges to edit the entity (IFE → System → Benutzer → Roles → Content-Management)
Example
... product.setTemplateFile(file) // => true ...
Parameter file (required)
This may be either of
- an uploaded file (from parameter
- a JSMA file
- a string body
string product.shortDescription
Returns the rendered shortDescription field of the product.
This function is deprecated! Use update-function instead!
Example
... product.shortDescription // => 'some short description' ...
string product.shortDescriptionUnprocessed
Returns the unprocessed shortDescription field of the product.
This function is deprecated! Use update-function instead!
Example
... product.shortDescriptionUnprocessed // => 'some unprocessed short description' ...
string product.sku
Returns the SKU field of the product.
Example
... product.sku // => 'the SKU' ...
string[] product.tags
Returns the list of tags of the product.
Example
... product.tags // => ['some', 'tags'] ...
object product.template
Returns the parsed template representation.
Example
... product.template // => { some: { object: {} } } ...
file product.templateFile
Returns the template as a JSMA file if available.
Example
... product.templateFile // => file anotherProduct.templateFile // => null ...
product.templateWithPiced(piced_uuid)
Returns the parsed template representation of an already customized version of the product specified by picedStore UUID.
Example
... product.templateWithPiced('UUID_LIKE') // => { some: { object: {} } } ...
Parameter piced_uuid (required)
string product.typ
Returns the type field from the product.
Example
... product.typ // => 'type content' ...
bool product.undelete()
Removes the deletion marker from the product.
This function is deprecated!
Example
... product.undelete() // => true ...
bool product.update(options)
Updates the product with new attributes from the options object.
Example
... product.update({ name: 'some other name' }) // => true ...
Parameter options (required)
An object that may have the following keys: [name, category, typ, format1, format2, name1, name2, description, shortDescription, metaTitle, metaKeywords, metaDescription]
product.uuid
Returns the uuid of the product.
Example
... var prodUuid = product.uuid; ...
product.vat
Returns the vat
Example
... product.vat ...