c# wpf document viewer pdf : Deleting pages from pdf document Library software class asp.net winforms wpf ajax ATGCommProgGuide24-part2078

ATG  C om mer ce P ro g ramm in g   Gui d e 
22 3  
13  -   Und ers t an d i ng   P rom o ti o n s 
μ
The user interface representation of an expression element consists of three parts: 
A fully qualified property of an item such as a product or SKU 
A comparator such as equals or is one of 
The editor to use for the property 
The resulting combination box looks like the following example: 
The user can add can add criteria by clicking the Add Criteria button in the UI (button inclusion and 
placement is automatic), and join these criteria as AND or OR combinations. 
When the user makes selections and saves the template-based promotion, the information is translated 
into a PMDL statement by the 
PSCExpressionModel
Using Optional Fields 
It may be necessary to mark fields as optional in your template. You can do this by including an 
required="false"
attribute in any user interface element tag. When this attribute is not present, the 
element is marked with an asterisk as usual for template fields. 
If you make a field optional and the user submits no content for that field, a blank area is substituted for 
the placeholder associated with the field in the associated item property (as linked by the placeholder-
name), which could render the PMDL invalid. If you do make fields optional, make sure that your PMDL 
blueprint permits an empty string. 
For example, if the user interface element for a particular placeholder value is optional and might be left 
empty, the placeholder should include both the start and end tags of the PMDL, or should be positioned 
so that an empty string does not break the PMDL. 
Translating User Input Values in Templates 
As part of your template design, take into account whether you need to translate the values users enter 
into values appropriate for the promotion repository item. For example, you may have a field that allows 
the user to input a Cents value between 0 and 99. The PMDL expects a dollar amount; therefore, the 25 
the user enters must be converted to 0.25. This task is handled by Nucleus components called translators. 
Translator components are based on classes that implement the 
ElementTranslator
interface (see the 
ATG API Reference for details). Translators are called after any client-side validation takes place. They take 
the following input: 
The element ID 
Deleting pages from pdf document - Library software class:C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Easy to Use C# Code to Extract PDF Pages, Copy Pages from One PDF File and Paste into Others
www.rasteredge.com
Deleting pages from pdf document - Library software class:VB.NET PDF Page Extract Library: copy, paste, cut PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Detailed VB.NET Guide for Extracting Pages from Microsoft PDF Doc
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
22 4  
13  -  Un d ers t an d in g  P ro m ot i o ns  
The element type 
The raw value to be translated, as entered by the user 
A list of 
ElementState
objects, which can be used if the translation for the current 
element is affected by input to another element 
A set of known repository property names and values for the item type 
The output is a value that can be directly applied to the property based on the 
placeholder-name
. If 
further translation is required at this point, you should use a multi-element translator instead. 
In addition to basic translation, you may need to combine user-entered values in order to provide a valid 
PMDL input. For example, it is common to combine the output of an “excludes” product set criteria with 
an “includes” product set criteria. Components that handle this advanced processing are called multi-
element translators; they can take multiple inputs and supply multiple output values. 
For example, the provided item discount templates include the 
UnlimitedDiscountTranslator
. These 
templates have a discount section that contains a 
textInput
element, in which the user can enter the 
number of times a customer can use the discount, and a 
checkbox
element to indicate unlimited use. The 
checkbox
element has the following attribute: 
placeholder-value-checked="-1" 
This attribute means that if the checkbox is selected, the output value is -1. 
The 
UnlimitedDiscountTranslator
takes the user-entered value or the unlimited option and provides 
a single 
placeholder
value as output, which either contains the number of items to discount or a -1 to 
indicate unlimited. The 
placeholder
value is then inserted in the location of its corresponding 
placeholder-name
For example, the following snippet shows PMDL before translation: 
<iterator name="up-to-and-including" 
number="${no_of_items_to_discount}" sort-by="priceInfo.listPrice" 
sort-order="${sort_order}"> 
After translation, if the user enters a value, the PMDL looks like the following:: 
<iterator name="up-to-and-including" number="5" sort 
-by="priceInfo.listPrice" sort-order="${sort_order}"> 
If the user checks unlimited, the PMDL looks like the following: 
<iterator name="up-to-and-including" number="-1" sort- 
by="priceInfo.listPrice" sort-order="${sort_order}"> 
Multi-element translators are defined in the 
ui-description
section of the template within a 
multi-
element-translators
element. For example, the following code shows how the 
multiElementTranslator
for the unlimited discount functionality is implemented: 
Library software class:C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
C#.NET PDF Library - Delete PDF Document Page in C#.NET. Provide C# Users with Mature .NET PDF Document Manipulating Library for Deleting PDF Pages in C#.
www.rasteredge.com
Library software class:VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
Visual Basic Sample Codes to Delete PDF Document Page in VB.NET Class. Free PDF edit control and component for deleting PDF pages in Visual Basic .NET framework
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
22 5  
13  -   Und ers t an d i ng   P rom o ti o n s 
<multi-element-translators> 
<multi-element-translator id="unlimited_discount_translator" 
translator-path="/atg/remote/promotion/template/translators 
/UnlimitedDiscountTranslator"> 
<placeholder-info placeholder-name="no_of_items_to_discount" 
translator-output-name="itemNumber"/> 
<element-info element-id="numberOfItemsToDiscount_textInput" 
translator-input-name="itemNumber"/> 
<element-info element-id="unlimited_checkbox" 
translator-input-name="unlimited"/> 
</multi-element-translator> 
</multi-element-translators> 
The 
UnlimitedDiscountTranslator
accepts two inputs, which are mapped to the 
translator-
input-name
element’s 
itemNumber
and to 
unlimited
in the 
element-info
child element. The 
placeholder-info
element maps the 
placeholder-name
to the translator’s 
output-name
key. 
Input and output names for each translator are defined in its properties file. The properties file for the 
example 
UnlimitedDiscountTranslator
above is: 
$class=atg.remote.promotion.template.translators.UnlimitedDiscount 
Translator 
$scope=session 
# Translator inputs 
itemNumberInputName=itemNumber 
unlimitedInputName=unlimited 
# Translator outputs 
itemNumberOutputName=itemNumber 
By default, ATG Commerce includes the following translators: 
AssetCollectorTranslator
- Translates selected asset IDs into PMDL 
RawPMDLTranslator
– Retrieves the PMDL from the promotion item 
ATG Commerce also includes the following multi-element translators: 
DiscountStructureTranslator
– translates the discount structure PMDL 
QualifierTranslator
– translates the qualifier PMDL 
TargetTranslator
– translates the target PMDL 
Library software class:C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
Deleting Pages. Sorting Pages. RasterEdge XDoc.PDF allows you to easily move PDF document pages position, including sorting pages and swapping two pages.
www.rasteredge.com
Library software class:VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
page, you will find detailed guidance on creating, loading, merge and splitting PDF pages and Files, adding a page into PDF document, deleting unnecessary page
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
22 6  
13  -  Un d ers t an d in g  P ro m ot i o ns  
DiscountTranslator
– Converts separate 
discount type
and 
adjuster
user 
interface inputs into separate 
discount-type
and 
adjuster
output values, allowing 
for a discount type of free. 
UnlimitedDiscountTranslator
– Sets up the iterator number attribute for PMDL 
iterators based on amount to discount or unlimited if a checkbox on the user interface 
is checked. 
You can create your own translators based on the provided framework; see the ATG API Reference
Translators should implement either the 
ElementTranslator.java
or the 
MultiElementTranslator.java
interface. 
Working with Repository Item Properties in Templates 
The sections that follow describe how to expose and use repository item properties as part of your 
promotions template. 
Note: If creating a template using a custom discount type, make sure the PMDL in that template sets the 
discount-type
attribute correctly. 
The 
item-properties
section of the PMDT file complements the 
ui-description
and allows you to 
set promotion properties using the 
place-holder-value
attributes of the template elements. The 
property
statements are based around a separate grammar from that used in the UI portion of the 
template. 
The 
item-properties
section of the template for a 
beginUsable
and 
endUsable
looks like the 
following sample. Note the $ marking where place-holder-value information is inserted: 
<property name="beginUsable"> 
${beginUsableValue} 
</property> 
<property name="endUsable"> 
${endUsableValue} 
</property> 
Displaying Static Values in Templates 
The default behavior for generating a display name for a property is: 
1.
If the resource bundle includes an entry of 
"psc.property.<full property 
name>"
use that value. 
psc.property.item.auxiliaryData.productRef.ancestorCategoryIds=Categories 
2.
If not, get the supported bean from which the property came and check the resource 
bundle for an entry of 
psc.bean.<supported bean name>
. This forms the first part 
of the display name. If no entry is found, use the display name of the 
DynamicBeanDescriptor for that bean. 
Library software class:C# Word - Delete Word Document Page in C#.NET
C# Word - Delete Word Document Page in C#.NET. Provides Users with Mature Document Manipulating Function for Deleting Word Pages. Overview.
www.rasteredge.com
Library software class:C# PowerPoint - Delete PowerPoint Document Page in C#.NET
C# PowerPoint - Delete PowerPoint Document Page in C#.NET. Provides Users with Mature Document Manipulating Function for Deleting PowerPoint Pages. Overview.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
22 7  
13  -   Und ers t an d i ng   P rom o ti o n s 
psc.bean.product=Product 
3.
For each sub-property part of the property name, check the resource bundle for an 
entry of 
psc.property.<sub property part name>
and append that value to the 
display name. If no entry is found, use the display name of the 
DynamicPropertyDescriptor instead. 
psc.property.amount=Price 
Displaying Dynamic Properties in Templates 
The 
content-source
element dynamically obtains information for display in the template. One common 
use is populating combo boxes (see the Product Set Criteria Elements section), but you can use it to 
populate any user interface element, provided that the content source’s Nucleus component provides the 
correct output. 
For example, consider this template XML: 
<comboBox id="discountType"> 
<content-source path="/atg/remote/promotion/template/contentSource/ 
CustomDiscountListContent"> 
<attribute-value-reference name="calculatorType" 
element-id="calculatorType"/> 
</content-source> 
</comboBox> 
The 
path
attribute is required, and identifies the location of the Nucleus component that returns the 
dynamic information. 
You can use the optional child 
attribute
element to specify parameters to pass to the Nucleus 
component. Parameter values are either set explicitly or obtained from the user input to another field in 
the template user interface. The component returns a 
ContentState
object that contains the 
information used to populate the field. 
For example, the 
attribute-value-reference
element in the code shown above tells the content 
source to watch a second user interface element, that has the 
element-id="calculatorType"
. The 
user’s currently selected value for the 
calculatorType
is assigned the name 
calculatorType
and sent 
to the 
CustomDiscountListContent
component. The component obtains a valid discount list for that 
calculatorType
If the user changes the selected 
calculatorType
, the new value is sent to the component to obtain an 
updated discount list for display. 
Content source Nucleus components should implement the 
atg.remote.promotion.template.contentSource.java
interface. See the ATG API Reference for 
information on this interface. 
Library software class:VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
check following TIFF page deleting methods and ''' &ltsummary> ''' Sort TIFF document pages in designed & profession imaging controls, PDF document, image to
www.rasteredge.com
Library software class:VB.NET TIFF: An Easy VB.NET Solution to Delete or Remove TIFF File
empowers users to insert blank pages into TIFF I have tried the function of deleting page from powerful & profession imaging controls, PDF document, image to
www.rasteredge.com
ATG  C om merce  P ro gra mm in g  G ui d e 
22 8  
13  -  Un d ers t an d in g  P ro m ot i o ns  
Using an Asset Picker in a Promotions Template 
If you have included repository item properties in your template, you need to provide a map to the Asset 
Picker editor needed to manipulate that property. The asset picker is a Flex 
RepositoryItemSetEditor
component used in many ATG applications (see the ATG Business Control Center Administration and 
Development Guide for general information on asset pickers). 
The asset picker requires three pieces of information: 
A Nucleus path to the repository in which the assets are found 
The assets’ repository item type 
Whether not multiple assets can be selected 
To provide this information, configure the 
assetPickerPropertyMap
and the 
assetPickerRepositoryMap
components in the 
PSCExpressionContext
component. 
The 
assetPickerRepositoryMap
property provides a map of properties to their repositories. The 
assetPickerPropertyMap
property provides a map of properties to their repository item types. If a 
property appears in this map, the promotions user interface uses the asset picker editor for that property; 
otherwise, it defaults to a simple text editor. 
Whether or not the asset picker allows multiple selections depends on the operator the user selects; for 
example, “is” allows only single selection, but “is one of” permits multiple selections. 
If a property is included in the 
assetPickerPropertyMap
, the promotions expression editor displays an 
asset picker for that property on the right hand side of the product set criteria expression, using the value 
of the map as the asset type. If an entry for the property is also in the 
assetPickerRepositoryMap
, the 
value of this map is used as the repository path for the asset picker. 
If a property is in the 
assetPickerPropertyMap
but not in the 
assetPickerRepositoryMap
, then the 
asset picker defaults to using the 
RepositoryPropertyDescriptor
for that property to determine the 
repository to use. 
This sample shows configuration for the two properties: 
assetPickerPropertyMap+=\ 
item.auxiliaryData.catalogRef.sites=siteConfiguration 
assetPickerRepositoryMap+=\ 
item.auxiliaryData.catalogRef.sites=/atg/multisite/SiteRepository 
The resulting user interface would display the 
Sites
property of the 
sku
repository item in an asset 
picker. The picker would use the 
siteConfiguration
asset type and 
SiteRepository
Automatic Property Filtering in Templates 
ATG Commerce repository items used in promotions tend to have many properties that are not useful as 
promotion criteria. Therefore, the list of properties is filtered by default. 
Library software class:C#: How to Delete Cached Files from Your Web Viewer
PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET VB.NET How-to, VB.NET PDF, VB.NET Word Visual C#.NET Developers the Ways of Deleting Cache Files.
www.rasteredge.com
Library software class:C# PDF remove image library: remove, delete images from PDF in C#.
comment annotate PDF, VB.NET delete PDF pages, VB.NET Provide C# Demo Code for Deleting and Removing Image and remove multiple or all images from PDF document.
www.rasteredge.com
ATG  C om mer ce P ro g ramm in g   Gui d e 
22 9  
13  -   Und ers t an d i ng   P rom o ti o n s 
If you add custom properties to your ATG Commerce repository, note that category properties do not 
appear in the PSC; only product and SKU properties are exposed. 
The 
/atg/remote/promotion/expreditor/psc/PSCExpressionContext
component includes the 
excludedProperties
property. The value for this property can end in * to exclude all sub-properties of a 
property. Note that a * does not exclude the referenced property itself, but only its sub-properties. The 
actual property must be excluded separately. For example: 
excludedProperties+=\ 
item.auxiliaryData.productRef.template.* 
The example above excludes all sub-properties of the 
template
property, but does not exclude the 
template
property itself. To exclude the 
template
property, use the following configuration: 
excludedProperties+=\ 
item.auxiliaryData.productRef.template\ 
item.auxiliaryData.productRef.template.* 
The 
PSCPropertyChoiceExpression
class on which the 
PSCExpressionContext
component is based 
extends the 
PricingPropertyChoiceExpression
class; therefore, it inherits a standard filtering 
mechanism which by default filters out properties marked as 
expert = true
or 
queryable = false
in 
the repository definition. You can override this behavior using the 
mandatoryProperties
property of 
PSCExpressionContext
Note that the 
mandatoryProperties
property does not support wildcards; all mandatory properties 
must be specified explicitly. This example shows 
mandatoryProperties
in use: 
mandatoryProperties+=\ 
item.auxiliaryData.productRef.ancestorCategoryIds 
This configuration results in the 
ancestorCategoryIds
property being included, even though this 
property is marked as expert in the repository. 
Using Promotion Upsell in Templates 
Along with other common promotion elements, you can include promotion upsell opportunities in your 
promotion template. To do so, create a 
screen-segment
within the 
ui-description
to contain the 
upsell information. The 
screen-segment
should contain one or more 
line
elements to provide the 
closeness qualifier information. 
The 
screen-segment
should also include the 
display-once=true
attribute. In ATG Merchandising, 
users can create promotion upsells directly from a promotion only during the initial promotion creation 
(additional options are available to users for creating promotion upsells; see the ATG Merchandising Guide 
for Business Users). 
For example, consider a promotion “Spend over $100, get free shipping”. The closeness qualifier in this 
case is “spend over $X”. The user interface for this would be similar to the following: 
ATG  C om merce  P ro gra mm in g  G ui d e 
23 0  
13  -  Un d ers t an d in g  P ro m ot i o ns  
<screen-segment display-name-resource="closenessQualifierTitle" display 
-once="true"> 
<line> 
<label id="spend_label" 
display-name="Amount to spend:"/> 
<textInput id="spend_textInput" placeholder-name="spend_value"/> 
</line> 
</screen-segment> 
The matching 
item-properties
section in template must contain a 
property
named 
closenessQualifiers
, which contains the PMDL information required to build the closeness qualifier. 
The property would be similar to the following: 
<item-properties> 
<property name="closenessQualifiers"> 
<item-properties> 
<property name="pmdlRule"> 
<![CDATA[ 
<pricing-model> 
<qualifier> 
<comparator name="greater-than-or-equals"> 
<value>order.priceInfo.amount</value> 
<constant> 
<data-type>java.lang.Double</data-type> 
<string-value> ${spend_value} </string-value> 
</constant> 
</comparator> 
</qualifier> 
</pricing-model> 
]]> 
</property> 
</item-properties> 
</property> 
</item-properties> 
You cannot nest multiple 
item-properties
elements within a 
property
element. 
Validating Promotions 
When a user views a promotion, the 
PromotionTemplateManager
determines whether the template is 
valid for that promotion. 
If the template fails validation but can still be parsed, ATG Merchandising may provide an opportunity to 
open the promotion using the Advanced Condition and Offer page (see the ATG Merchandising Guide for 
Business Users). If the Advanced Condition and Offer is unable to display the template, ATG Merchandising 
displays the raw PMDL. 
ATG  C om mer ce P ro g ramm in g   Gui d e 
23 1  
13  -   Und ers t an d i ng   P rom o ti o n s 
When a user creates a new promotion from a template, the promotion is validated through a combination 
of client-side and server-side activities. Client-side validation is limited; for 
textInput
and 
textArea
elements, you can use the following attributes for validation: 
maxChars
– limits the number of characters that can be typed in the field 
restrict
– indicates the set of characters that a user can enter. If the restrict attribute 
is a string of characters, the user can only enter those characters into the field. You can 
specify ranges using a hyphen. Use a double backslash to include characters such as ^, 
- and \. For example, the following code allows the user to enter a dash ( - ) in the 
textInput
restrict="\\-"
The 
restrict
attribute maps to the Flex 
restrict
object, and supports standard 
Flex functionality. 
You can also associate a user interface element with a Nucleus validator component, using the 
validator
attribute in the 
ui-description
element. The Nucleus component performs the validation 
when the user clicks OK on the completed Condition and Offer popup. 
Each user interface component type has its own validator, but you can use a single validator for multiple 
UI element types. The validator is passed the type of element the information came from, the information 
that was supplied by the user and the id of the field it came from. The field id uniquely identifies the user 
interface element to be validated. 
If validation and any subsequent translation are successful, a 
PropertyState
object containing the 
promotion properties is returned. If some validation failed, then an error string is passed back to the user 
interface inside the 
PropertyState
object, to be associated with the user interface element failing 
validation. The promotion itself is not created or saved at this time. 
By default, ATG Commerce includes the following validator components in the 
atg.remote.promotion.template.validators
package: 
BandedDiscountValidator
Number Validator
RegexValidator
The 
RegexValidator
includes several preconfigured variations that can check for the following patterns: 
DecimalValidator—Match any positive floating point number, includes zero 
regexPattern=(^[0-9]*(\.[0-9]+)?$) 
DollarValidator—Match any dollar amount to two decimal places, includes zero 
regexPattern=(^[0-9]*(\.[0-9][0-9])?$) 
NonZeroDecimalValidator—Match any positive floating point number, excludes zero 
regexPattern=(^([0-9]*[.][0-9]*[1-9]+[0-9]*)$)|(^([0-9]*[1-9]+ 
[0-9]*[.][0-9]+)$)|(^([0-9]*[1-9]+[0-9]*)$) 
ATG  C om merce  P ro gra mm in g  G ui d e 
23 2  
13  -  Un d ers t an d in g  P ro m ot i o ns  
You can extend the provided validation framework by adding your own validators. Custom validators 
must implement the 
atg.remote.promotion.template.contentSource.java
interface; see the ATG 
API Reference for details. 
Localizing Promotions Templates 
You can use resource bundles to localize promotions templates. The resource bundles must be placed in 
the following directory: 
<ATG10dir>/ATG10/home/locallib 
To specify a bundle for key/value retrieval, use the 
resource-bundle
attribute of the 
ui-description
element: 
<ui-description available-in-ui="false" resource- 
bundle="atg.remote.promotion.template.Resources" display-name- 
resource="template.item.advancedItemDiscount.title" > 
If a user views a template that refers to a resource bundle that has not already been loaded, the client 
attempts to locate the new bundle before displaying the template. If it cannot do so, the client displays an 
error message, and the template includes the resource keys instead of the localized strings. 
Editing Existing Promotion Templates 
You can use XML-combine to override and extend an existing promotions template. If you do this, be 
careful not to break any promotions that have already been created based on the original template (if the 
promotion can no longer be displayed due to changes in the template, the user may be able to convert 
the template to use an Advanced Condition and Offer. Bear in mind that promotion assets cannot be 
deleted in ATG Merchandising. 
Another option is to make changes in a copy of the original template, and then use the new version for 
future promotions. 
Similarly, do not delete any templates unless you are certain that no promotions based on that template 
exist. 
Importing and Exporting Promotions 
If ATG Commerce is not your usual tool for creating and maintaining promotions, you will need to import 
promotions you create in your external system into ATG Commerce for pricing purposes. ATG Commerce 
includes an API that allows you to build custom code for this purpose. 
If you are using promotions templates, importing promotions is as simple as specifying which template to 
use and the placeholder values. If you are not using templates, you must first build the PMDL for your 
promotions. 
Documents you may be interested
Documents you may be interested