<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: How to Disable download in Windchill</title>
    <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165463#M19574</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Luar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;were you able to figure out the ACL?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 17 Jan 2015 19:21:47 GMT</pubDate>
    <dc:creator>LoriSood</dc:creator>
    <dc:date>2015-01-17T19:21:47Z</dc:date>
    <item>
      <title>How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165455#M19566</link>
      <description>Hi everyone,Can download function in documents can be disable even if you are in "viewer" group? Because most of our customer has a confidential document that they dont want to be downloaded, or print.How to Disable Download Primary File menu?thanks!,Luar</description>
      <pubDate>Fri, 04 May 2018 13:33:46 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165455#M19566</guid>
      <dc:creator>Luar</dc:creator>
      <dc:date>2018-05-04T13:33:46Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165456#M19567</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Luar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Write a validator for the ACTION and disable the menu from all the place of windchill.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Br&lt;/P&gt;&lt;P&gt;MKR&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 09 Jan 2015 15:28:40 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165456#M19567</guid>
      <dc:creator>rmk</dc:creator>
      <dc:date>2015-01-09T15:28:40Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165457#M19568</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Do you want to deny everyone but the owner the ability to download?&lt;/P&gt;&lt;P&gt;If so, you deny Download permission on WTDocuments to all principals except owner?&lt;/P&gt;&lt;P&gt;Or you can deny Download to a group/user/role.&lt;/P&gt;&lt;P&gt;If the logic of determining who should have download permission and who should not is more complicated then you will need to create a custom validator per MKR's suggestion.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 10 Jan 2015 00:32:43 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165457#M19568</guid>
      <dc:creator>LoriSood</dc:creator>
      <dc:date>2015-01-10T00:32:43Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165458#M19569</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ramanathan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you teach me where/how to do that?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Luar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Jan 2015 01:55:16 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165458#M19569</guid>
      <dc:creator>Luar</dc:creator>
      <dc:date>2015-01-12T01:55:16Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165459#M19570</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Lori,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes, I want to deny everyone except the owner, how can I deny download per user/group/role?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Luar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 12 Jan 2015 01:57:52 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165459#M19570</guid>
      <dc:creator>Luar</dc:creator>
      <dc:date>2015-01-12T01:57:52Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165460#M19571</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I think you can create an ACL where you can deny download permissions to whatever users you wish. ACL's are created via Site--&amp;gt;Utilities --&amp;gt; Policy Administration.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-Malavika&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Jan 2015 05:44:14 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165460#M19571</guid>
      <dc:creator>mrane</dc:creator>
      <dc:date>2015-01-13T05:44:14Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165461#M19572</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Luar, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hava a look on &lt;STRONG&gt;UI Validation &lt;/STRONG&gt;@customization guide. Lot of OOTB Java validator class is responsible for hiding/enabling/disabling an action. Explore it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #4d4d4e; font-family: ArialMT-Identity-H;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;Creating a Validator&lt;/P&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt; &lt;P align="left"&gt;Creating a validator class should be fairly simple. All you need to do is create a&lt;/P&gt;&lt;P align="left"&gt;class that extends com.ptc.core.ui.validation.DefaultUIComponentValidator.&lt;/P&gt;&lt;P align="left"&gt;The class below represents a skeleton for a simple validator class.&lt;/P&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt; font-family: CourierNewPSMT-Identity-H;"&gt; &lt;P align="left"&gt;package com.ptc.windchill.enterprise.myPackage.validators;&lt;/P&gt;&lt;P align="left"&gt;import com.ptc.core.ui.validation.DefaultUIComponentValidator;&lt;/P&gt;&lt;P align="left"&gt;public class MyValidator extends DefaultUIComponentValidator{&lt;/P&gt;&lt;P align="left"&gt;//override one or more validation methods from&lt;/P&gt;&lt;P align="left"&gt;DefaultUIComponentValidator&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #4d4d4e; font-family: ArialMT-Identity-H;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;Implementing Pre-Validation Methods&lt;/P&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt; &lt;P align="left"&gt;Once you’ve created a validator class skeleton, if you’re adding pre-validation&lt;/P&gt;&lt;P align="left"&gt;logic for an attribute, you’ll want to implement the performLimitedPreValidation()&lt;/P&gt;&lt;P align="left"&gt;method. If you’re adding pre-validation logic for an action, you’ll want to&lt;/P&gt;&lt;P align="left"&gt;implement both the performFullPreValidation() and performLimitedPreValidation()&lt;/P&gt;&lt;P align="left"&gt;methods. As mentioned in the previous sections regarding limited pre-validation&lt;/P&gt;&lt;P align="left"&gt;and full pre-validation, the implementations of these two methods may be&lt;/P&gt;&lt;P align="left"&gt;identical, or they may differ. The class on the next page contains some skeleton&lt;/P&gt;&lt;P&gt;implementations of these methods.&lt;/P&gt;&lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: CourierNewPSMT-Identity-H;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;public class MyValidator extends DefaultUIComponentValidator{&lt;/P&gt;&lt;P align="left"&gt;@Override&lt;/P&gt;&lt;P align="left"&gt;public UIValidationResultSet performFullPreValidation()&lt;/P&gt;&lt;P align="left"&gt;(UIValidationKey validationKey,&lt;/P&gt;&lt;P align="left"&gt;UIValidationCriteria validationCriteria, Locale&lt;/P&gt;&lt;P align="left"&gt;locale) throws WTException {&lt;/P&gt;&lt;P align="left"&gt;UIValidationResultSet resultSet =&lt;/P&gt;&lt;P align="left"&gt;UIValidationResult.newInstance();&lt;/P&gt;&lt;P&gt;// perform your business logic here&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: CourierNewPSMT-Identity-H;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;// if you want to enable the action/component, do this:&lt;/P&gt;&lt;P align="left"&gt;//&lt;/P&gt;&lt;P align="left"&gt;resultSet.addResult(UIValidationResult.newInstance(validationKey,&lt;/P&gt;&lt;P align="left"&gt;// UIValidationStatus.ENABLED));&lt;/P&gt;&lt;P align="left"&gt;// if you want to disable the action/component, do this:&lt;/P&gt;&lt;P align="left"&gt;//&lt;/P&gt;&lt;P align="left"&gt;resultSet.addResult(UIValidationResult.newInstance(validationKey,&lt;/P&gt;&lt;P align="left"&gt;// UIValidationStatus.DISABLED));&lt;/P&gt;&lt;P align="left"&gt;// if you want to hide the action/component, do this:&lt;/P&gt;&lt;P align="left"&gt;//&lt;/P&gt;&lt;P align="left"&gt;resultSet.addResult(UIValidationResult.newInstance(validationKey,&lt;/P&gt;&lt;P align="left"&gt;UIValidationStatus.HIDDEN));&lt;/P&gt;&lt;P align="left"&gt;return resultSet;&lt;/P&gt;&lt;P align="left"&gt;}&lt;/P&gt;&lt;P align="left"&gt;@Override&lt;/P&gt;&lt;P align="left"&gt;public UIValidationResultSet performLimitedPreValidation()&lt;/P&gt;&lt;P align="left"&gt;(UIValidationKey validationKey,&lt;/P&gt;&lt;P align="left"&gt;UIValidationCriteria validationCriteria, Locale&lt;/P&gt;&lt;P align="left"&gt;locale) throws WTException {&lt;/P&gt;&lt;P align="left"&gt;UIValidationResultSet resultSet =&lt;/P&gt;&lt;P&gt;UIValidationResultSet.newInstance();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: CourierNewPSMT-Identity-H;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;// perform your business logic here&lt;/P&gt;&lt;P align="left"&gt;// if you want to enable the action/component, do this:&lt;/P&gt;&lt;P align="left"&gt;//&lt;/P&gt;&lt;P align="left"&gt;resultSet.addResult(UIValidationResult.newInstance(validationKey,&lt;/P&gt;&lt;P align="left"&gt;// UIValidationStatus.ENABLED));&lt;/P&gt;&lt;P align="left"&gt;// if you want to disable the action/component, do this:&lt;/P&gt;&lt;P align="left"&gt;//&lt;/P&gt;&lt;P align="left"&gt;resultSet.addResult(UIValidationResult.newInstance(validationKey,&lt;/P&gt;&lt;P align="left"&gt;// UIValidationStatus.DISABLED));&lt;/P&gt;&lt;P align="left"&gt;// if you want to hide the action/component, do this:&lt;/P&gt;&lt;P align="left"&gt;//&lt;/P&gt;&lt;P align="left"&gt;resultSet.addResult(UIValidationResult.newInstance(validationKey,&lt;/P&gt;&lt;P align="left"&gt;UIValidationStatus.HIDDEN));&lt;/P&gt;&lt;P align="left"&gt;return resultSet;&lt;/P&gt;&lt;P align="left"&gt;}&lt;/P&gt;&lt;P align="left"&gt;}&lt;/P&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P align="left"&gt;Basic Validator Registration&lt;/P&gt;&lt;P align="left"&gt;To register your validator (using only the action name for an action), you need to&lt;/P&gt;&lt;P align="left"&gt;add an entry to *service.properties.xconf like this:&lt;/P&gt;&lt;SPAN style="font-size: 8pt; font-family: CourierNewPSMT-Identity-H;"&gt; &lt;P align="left"&gt;&amp;lt;Service context="default"&lt;/P&gt;&lt;P align="left"&gt;name="com.ptc.core.ui.validation.UIComponentValidator"&amp;gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;lt;Option requestor="null" serviceClass="[your fully-qualified&lt;/P&gt;&lt;P align="left"&gt;Validator class]"&lt;/P&gt;&lt;P align="left"&gt;selector="[action name/attribute descriptor ID]" /&amp;gt;&lt;/P&gt;&lt;P align="left"&gt;&amp;lt;/Service&amp;gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt; &lt;P align="left"&gt;Once propagated to *service.properties, it should produce an entry like this:&lt;/P&gt;&lt;/SPAN&gt;&lt;SPAN style="font-size: 8pt; font-family: CourierNewPSMT-Identity-H;"&gt; &lt;P align="left"&gt;wt.services/svc/default/com.ptc.core.ui.vali&lt;/P&gt;&lt;P align="left"&gt;dation.UIComponentValidator/[action name/attribute descriptor ID]/null/0=[your fullyqualified&lt;/P&gt;&lt;P align="left"&gt;Validator class]/duplicate&lt;/P&gt;&lt;/SPAN&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt; &lt;P align="left"&gt;• Note that in this case, the requestor attribute is null, meaning the action’s object&lt;/P&gt;&lt;P&gt;type is not used in the lookup.&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt;&lt;SPAN id="mce_marker"&gt;&lt;/SPAN&gt;BR&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt;﻿&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Ramanathan&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: CourierNewPSMT-Identity-H;"&gt;&lt;SPAN lang="JA" style="font-family: TimesNewRomanPSMT-Identity-H;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 8pt; font-family: CourierNewPSMT-Identity-H;"&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt;&lt;SPAN lang="JA" style="font-size: 8pt; font-family: TimesNewRomanPSMT-Identity-H; color: #4d4d4e;"&gt;&lt;SPAN&gt;&lt;SPAN&gt;﻿&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Jan 2015 12:50:01 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165461#M19572</guid>
      <dc:creator>rmk</dc:creator>
      <dc:date>2015-01-13T12:50:01Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165462#M19573</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Luar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Be aware that read access will still allow download of viewable if you publish.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Darren&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 13 Jan 2015 16:23:01 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165462#M19573</guid>
      <dc:creator>DarrenStorey</dc:creator>
      <dc:date>2015-01-13T16:23:01Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165463#M19574</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Luar,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;were you able to figure out the ACL?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 17 Jan 2015 19:21:47 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/165463#M19574</guid>
      <dc:creator>LoriSood</dc:creator>
      <dc:date>2015-01-17T19:21:47Z</dc:date>
    </item>
    <item>
      <title>Re: How to Disable download</title>
      <link>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/587385#M58619</link>
      <description>&lt;P&gt;Lori&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Do you have any sample on how that can be done?&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Thu, 03 Jan 2019 21:58:19 GMT</pubDate>
      <guid>https://www.ptcusercommunity.com/t5/Windchill/How-to-Disable-download/m-p/587385#M58619</guid>
      <dc:creator>jtang</dc:creator>
      <dc:date>2019-01-03T21:58:19Z</dc:date>
    </item>
  </channel>
</rss>

