tag:blogger.com,1999:blog-10077797650533455762024-03-26T10:18:28.289+03:00SharePoint DenShocking truth about SharePoint revealed!Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.comBlogger89125tag:blogger.com,1999:blog-1007779765053345576.post-9053853282072585332018-12-31T21:41:00.003+03:002018-12-31T21:42:26.010+03:00SP Comics - making fun of SharePointI have finally finished<a href="http://spcomics.ca/comic/Database" target="_blank"> the website </a>for hosting my comic strips.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://spcomics.ca/comic/Database" target="_blank"><img alt=" SP comics" border="0" data-original-height="237" data-original-width="567" height="167" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgbCSIZNw5OdIfDRmoDN5DNfI-CoW4HoW3GHLyO34quU60ONKEj4HfUUX3oiXt4hpBh1ZH4XbhJjSoVio9faeAjBPtB3B1qXVeM7fUsC0QzpMDfC0THLuKU5hVuex0J98i52r2GjCC9wvAc/s400/Sample.png" width="400" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://comicsstorage.blob.core.windows.net/comics/Database.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="335" data-original-width="800" height="167" src="https://comicsstorage.blob.core.windows.net/comics/Database.png" width="400" /></a></div>
<br />Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-62504048786967122912018-12-31T21:34:00.003+03:002018-12-31T21:35:31.872+03:00SharePoint Productivity ToolsSharePoint Productivity Tools<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="485" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/Hx3K2YeOb5BsdM" style="border-width: 1px; border: 1px solid #ccc; margin-bottom: 5px; max-width: 100%;" width="595"> </iframe> <br />
<div style="margin-bottom: 5px;">
<strong> <a href="https://www.slideshare.net/DenisMolodtsov1/share-point-productivity-tools" target="_blank" title="Share point productivity tools">Share point productivity tools</a> </strong> from <strong><a href="https://www.slideshare.net/DenisMolodtsov1" target="_blank">Denis Molodtsov</a></strong> <br />
<br />
List of all tools is on <a href="https://github.com/Zerg00s/productivity-tools" target="_blank">Github</a></div>
Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-48105844987074129182018-11-28T21:38:00.003+03:002018-11-28T21:38:25.604+03:00Visual Studio Code: Black screen issue. FixIf you are like me and you had an annoying issue with Visual Studio code that caused a black scree then you will like this fix.<br />
<br />
<b>My old fix:</b><br />
<blockquote class="tr_bq">
code --disable-gpu</blockquote>
<br />
This was launching VS Code without GPU acceleration. It was a workable solution, but still very inconvenient.<br />
<br />
<b>New, permanent fix:</b><br />
- Open your Nvidia Control panel<br />
- Set Physx Configuration<br />
- Under Select a physX processor select "CPU":<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh10-hXcq3w9BRzWbPzj9qQeiumT6VX7U9v76ZCaAVmgjN6ClLJHZ4hGcefiru0l0KTMwaL2OWEaeIIijYIWfFoQlcNajbxTMzzF7BPNSdGyhyphenhypheniNeGlv5i1GWmn3mz5QgALOCKRA7WBFI0X/s1600/Blogger.com.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="556" data-original-width="749" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh10-hXcq3w9BRzWbPzj9qQeiumT6VX7U9v76ZCaAVmgjN6ClLJHZ4hGcefiru0l0KTMwaL2OWEaeIIijYIWfFoQlcNajbxTMzzF7BPNSdGyhyphenhypheniNeGlv5i1GWmn3mz5QgALOCKRA7WBFI0X/s1600/Blogger.com.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-10345441013330861212018-07-26T04:37:00.001+03:002018-07-26T04:37:15.111+03:00Migrate MS Flow and PowerApps to a different Office 365 tenant. SharePoint Data Sources<span style="background-color: white; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 16px;">Have you ever tried moving PowerApps or MS Flow from one Office 365 tenant to another? If you have SharePoint as a data source - then the only official way is to remove all such data sources and add them back. This PowerShell script will help you to automatically convert exported App packages to be compatible with the new tenant. This way you won't have to recreate SharePoint data sources.</span><br />
<span style="background-color: white; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 16px;"><br /></span>
<span style="background-color: white; color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; font-size: 16px;">Here is the script that will help you with this ordeal: </span><span style="color: #24292e; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"><a href="https://github.com/Zerg00s/FlowPowerAppsMigrator">https://github.com/Zerg00s/FlowPowerAppsMigrator</a></span><br />
<span style="color: #24292e; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><br /></span>
<span style="color: #24292e; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLX4iR-3i3E4uy9-kJ_OfyG9RNlv29Ixtm06htORtmgCRGWv7gNsbNT1K-IbvhYNwDebp2b9PyfCm8oo6qmXOvYN5C2mxjBdGwd4ITEUyNsgEY08RVuwy_bC6913cnXMtYBfFpgo9NDtWU/s1600/2018-07-25-21-08-30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="257" data-original-width="716" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLX4iR-3i3E4uy9-kJ_OfyG9RNlv29Ixtm06htORtmgCRGWv7gNsbNT1K-IbvhYNwDebp2b9PyfCm8oo6qmXOvYN5C2mxjBdGwd4ITEUyNsgEY08RVuwy_bC6913cnXMtYBfFpgo9NDtWU/s1600/2018-07-25-21-08-30.png" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLFG492BpTB9PVs4zNI2rN00kvdFNLGoyMUHAutfnG4Oo2V-JOcI8_cPnwsj9dsx91AmgfW4wz77Smdq6MrfeQyqAzetdflXmtlJy2RxN8orq0p6gqSdZfNMK_PwrFwGiEpl3-Cdiu_2kI/s1600/2018-07-25-21-14-55.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="436" data-original-width="713" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLFG492BpTB9PVs4zNI2rN00kvdFNLGoyMUHAutfnG4Oo2V-JOcI8_cPnwsj9dsx91AmgfW4wz77Smdq6MrfeQyqAzetdflXmtlJy2RxN8orq0p6gqSdZfNMK_PwrFwGiEpl3-Cdiu_2kI/s1600/2018-07-25-21-14-55.png" /></a></div>
<span style="color: #24292e; font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;"><br /></span>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-66551025470661833142018-07-19T05:09:00.001+03:002018-07-19T16:39:38.360+03:00Can PowerApps and MS Flow run with elevated privileges?No, MS Flow and PowerApps are using current user's account.<br />
<br />
Setup #1:<br />
- User "Admin" creates a PowerApp that uses SharePoint List as a datasource<br />
- User "Reader" gets Edit access to this app via Sharing, but this user has no permissions to the SharePoint list whatsoever.<br />
<br />
What will happen?<br />
<br />
<b>Results:</b><br />
- The "Reader" can open the PowerApp, but as soon as they try to create a new list item - they get an error:<br />
<i><span style="color: red;"><b>There was a problem saving your change. The data source may be invalid.</b></span></i><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpi71UYRNPwszPlt3ArR31wZAqKz311nmLEdBSAOPARk0UpuVpCsgINsCvdbRxfYoJFo__S_rAyYQreGUkUS_H_mG6r6Wx7sd6nSA6ySrS1Auk0t-IuhU7yMv6CIsLhWVK7SVtW7oqt5uv/s1600/Invalid.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="121" data-original-width="812" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpi71UYRNPwszPlt3ArR31wZAqKz311nmLEdBSAOPARk0UpuVpCsgINsCvdbRxfYoJFo__S_rAyYQreGUkUS_H_mG6r6Wx7sd6nSA6ySrS1Auk0t-IuhU7yMv6CIsLhWVK7SVtW7oqt5uv/s1600/Invalid.png" /></a></div>
<i><br /></i>
<br />
<br />
<b>Conclusion:</b><br />
PowerApps use current user's permissions and don't have "run with elevated privileges" functionality.<br />
<br />
<br />
<b>Setup #2</b><br />
- User "Admin" creates a PowerApp that uses SharePoint List as a data source<br />
- User "Admin" creates a PowerApp button that runs an MS Flow that creates a list item in the SharePoint List<br />
- User "Reader" gets Edit access to this app via Sharing, but this user has no permissions to the<br />
<br />
<b>Results:</b><br />
- The "Reader" can open the PowerApp, but when they click on the button to run the flow that attempts to create a list item - nothing happens. In the MS flow history we see the 403 (Access denied) error:<br />
<br />
<b><span style="color: red;"><i>System.UnauthorizedAccessException</i></span></b><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiXHdyq2omlhsG6IC_rc4mmQ5KWxBPKDt3Tf5XjUwfXCeuG6rXvVwOHeGNpd49yUsimS4IUc45rLHLzqTjZ8DuB9v8NMrAKtZoe16Yas1wqYV8xE_T41oOFbSPuT-lnOP1kS5LubyJg-xw/s1600/Flow+Access+Denied.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="605" data-original-width="624" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiXHdyq2omlhsG6IC_rc4mmQ5KWxBPKDt3Tf5XjUwfXCeuG6rXvVwOHeGNpd49yUsimS4IUc45rLHLzqTjZ8DuB9v8NMrAKtZoe16Yas1wqYV8xE_T41oOFbSPuT-lnOP1kS5LubyJg-xw/s1600/Flow+Access+Denied.png" /></a></div>
<br />
<br />
<b>Conclusion:</b><br />
MS Flow that are run manually via a button in PowerApps use current user's permissions and don't have "run with elevated privileges" functionality.<br />
<br />
P.S. MS Flows that are triggered on List Item Created / Updated are run using the credentials provided by the Flow author. So, depending on how the Flow was started - different credentials are used.<br />
<div>
<br /></div>
<br />
<br />
<div>
<br /></div>
Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-77563659975346767772018-07-18T04:06:00.001+03:002018-07-18T04:07:31.460+03:00SharePoint 2016 Restore User that was deleted from User Information ListThere could be a scenario when the user was deleted both in AD and the User Information List and we need to restore it. That could be necessary when there was a custom solution developed that relies on the user accounts to exist in SharePoint. Needless to say these solutions were developed incorrectly, but who am I to judge.<br />
<br />
For these rare cases, here is the way that to restore the deleted user. This worked for me in SharePoint 2016, but it might also work in 2013 and 2019.<br />
<br />
<b>Disclaimer: </b>Any direct modifications to the SharePoint SQL databases are not supported by Microsoft. Restore the user by following approach only if you know for sure what you are doing.<br />
<br />
1. First of all - determine an ID of the deleted user:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV2ggEJeWdKD9M7tw4jKpwsA0fm7jlcKRbRexIKMSpggLPqePu8BXlO7woecUGRQM4UgCqH6mhJEPs8G2-TM5UJBvTj-p7XnpctmoDY1j5mDecH2XywIv7Mns1XKu9fV91cJnuYMstCXcP/s1600/User_ID.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="154" data-original-width="572" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgV2ggEJeWdKD9M7tw4jKpwsA0fm7jlcKRbRexIKMSpggLPqePu8BXlO7woecUGRQM4UgCqH6mhJEPs8G2-TM5UJBvTj-p7XnpctmoDY1j5mDecH2XywIv7Mns1XKu9fV91cJnuYMstCXcP/s1600/User_ID.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
2. In SQL Management Studio - find your content database and navigate to the UserInfo table. Verify that deleted user is still listed in the table. Notice that tp_Deleted will equal to the user ID and tp_IsActive will be equal to <b>0:</b></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuU8vJrFXp_c6veCwAJ9fby0KDbLQILiNMpvPJmbQ4p1kS7UyvSimRqMa4FuGsPNK2qTKwfajC62E4Dg64yoEeUBhVzb2Eu60vXgdkK9tixYdyHdFu8abJd8HPZRXBTzKmP66OkyHFAZlV/s1600/UserInfo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="278" data-original-width="688" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhuU8vJrFXp_c6veCwAJ9fby0KDbLQILiNMpvPJmbQ4p1kS7UyvSimRqMa4FuGsPNK2qTKwfajC62E4Dg64yoEeUBhVzb2Eu60vXgdkK9tixYdyHdFu8abJd8HPZRXBTzKmP66OkyHFAZlV/s1600/UserInfo.png" /></a></div>
<br />
3. Modify a row where tp_id is equal to the user's ID:<br />
a) set tp_Deleted to 0<br />
b) set tp_IsActive to True<br />
c) Save changes to the row<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkHbwT3Z42wpuAAQchG2mIFtjGkJssrjGd3gwba9uyA6a49VxDUMAC1OfDqjIjzZds57eoU58vYTNTnTFMEjnTU-Le4b0k_XB8390iC779oO8iXmgXlmwrO3pAqGAl_4Rwly-28ekawIV7/s1600/UserInfo_Update.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="335" data-original-width="823" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkHbwT3Z42wpuAAQchG2mIFtjGkJssrjGd3gwba9uyA6a49VxDUMAC1OfDqjIjzZds57eoU58vYTNTnTFMEjnTU-Le4b0k_XB8390iC779oO8iXmgXlmwrO3pAqGAl_4Rwly-28ekawIV7/s1600/UserInfo_Update.png" /></a></div>
<br />
4. For the appropriate content database, run the following command to find deleted user in the <b>AllUserData</b> table:<br />
<pre class="brush:sql">
SELECT * FROM [WSS_Content].[dbo].[AllUserData]
Where bit3 = 1 and tp_ID = User_ID
</pre>
<br />
Make sure this command returned a single row. If there was a single row - proceed to restoring the user:<br />
<br />
5. To restore the user, we need to change bit3 column's value from 1 to 0 :<br />
<pre class="brush:sql">
UPDATE [WSS_Content].[dbo].[AllUserData]
SET bit3 = 0
Where bit3 = 1 and tp_ID = User_ID
</pre>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAC_6Qd1IlP-Al7UJfm99YehmD-gQ7pO_w41rEnXp95mWoOQKvhIrtU05SFSDSZoX3qzqtovtCw6NVWsxmI_WWil-EJQUuzydmedly6c5q-W5yHIej0I6RspRmhB6DfUvkwWWojvddavcd/s1600/AllUserData.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="183" data-original-width="752" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAC_6Qd1IlP-Al7UJfm99YehmD-gQ7pO_w41rEnXp95mWoOQKvhIrtU05SFSDSZoX3qzqtovtCw6NVWsxmI_WWil-EJQUuzydmedly6c5q-W5yHIej0I6RspRmhB6DfUvkwWWojvddavcd/s1600/AllUserData.png" /></a></div>
<br />
Done! Now go ahead and click on the deleted user. Verify that there is no error.<br />
<br />Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-75478147029178548982018-06-27T18:30:00.002+03:002018-06-27T23:32:46.888+03:00Maintenance Mode in SharePoint Online and Modern pagesTurns out, if you append <span style="background-color: white; color: #2f2f2f; font-family: "courier new" , "courier" , monospace; font-size: 16px;">?maintenancemode=true </span>of your SharePoint page you will see a special maintenance view:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3eZ1k58hHIlcXBYiKqrmBglYNhv5o7WGX-_GGRwu_zt1_rB089vmcuwZrRhKsJvpnCs6oz-7BBiSirDQxdhs6IoiAd2bN8uAL6aZGG89R5MdTYDZPji3L7XfulTEEMmqF7EGPLRLFRnUU/s1600/Maintenance+mode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="959" data-original-width="957" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3eZ1k58hHIlcXBYiKqrmBglYNhv5o7WGX-_GGRwu_zt1_rB089vmcuwZrRhKsJvpnCs6oz-7BBiSirDQxdhs6IoiAd2bN8uAL6aZGG89R5MdTYDZPji3L7XfulTEEMmqF7EGPLRLFRnUU/s640/Maintenance+mode.png" width="636" /></a></div>
<br />
<br />
<div class="" style="background-color: white; box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
On your page, you will see a summary of data from the Manifest and Data tabs. The summary information includes:</div>
<table class="banded" id="tblID0EIBACAABAAA" style="background-color: white; border-bottom: 1px solid rgb(204, 204, 204); border-collapse: collapse; border-top: 1px solid rgb(204, 204, 204); box-sizing: border-box; color: #363636; font-family: "Segoe UI", "Segoe UI Web Regular", "Segoe UI Symbol", "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 10px; margin-bottom: 20px; margin-top: 10px; padding: 0px; width: 768px;"><tbody style="box-sizing: border-box;">
<tr style="border: 0px !important; box-sizing: border-box; padding: 0px !important; vertical-align: top;"><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
Alias</div>
</td><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
The name of the web part</div>
</td></tr>
<tr style="background-color: #f4f4f4; border: 0px !important; box-sizing: border-box; padding: 0px !important; vertical-align: top;"><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
Id</div>
</td><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
The unique ID of the web part</div>
</td></tr>
<tr style="border: 0px !important; box-sizing: border-box; padding: 0px !important; vertical-align: top;"><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
Instance Id</div>
</td><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
The ID of a specific instance of a web part (that is, if you have two more of the same web parts on a page, they will each have the same web part ID, but a different instance ID.</div>
</td></tr>
<tr style="background-color: #f4f4f4; border: 0px !important; box-sizing: border-box; padding: 0px !important; vertical-align: top;"><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
IsInternal</div>
</td><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
Indicates whether the web part was made by Microsoft or a third party. If True, it is made by Microsoft. If False, it is made by a third party.</div>
</td></tr>
<tr style="border: 0px !important; box-sizing: border-box; padding: 0px !important; vertical-align: top;"><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
Version</div>
</td><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
The version number of the web part.</div>
</td></tr>
<tr style="background-color: #f4f4f4; border: 0px !important; box-sizing: border-box; padding: 0px !important; vertical-align: top;"><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
Environment</div>
</td><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
<span class="ocpUI" style="box-sizing: border-box; font-weight: 700;">Environment</span>: Indicates the SharePoint environment in use.</div>
<ul style="box-sizing: border-box; font-size: 1.6em; list-style: url("data:image/png; margin: 30px 0px; padding-bottom: 0px; padding-left: 12px;">
<li style="box-sizing: border-box; font-size: 1em; margin-left: 0px; margin-top: 18px; padding-left: 6px;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1em; line-height: 1.5; padding: 0px;">
0 = Test environment</div>
</li>
<li style="box-sizing: border-box; font-size: 1em; margin-left: 0px; margin-top: 18px; padding-left: 6px;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1em; line-height: 1.5; padding: 0px;">
1 = Local Workbench</div>
</li>
<li style="box-sizing: border-box; font-size: 1em; margin-left: 0px; margin-top: 18px; padding-left: 6px;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1em; line-height: 1.5; padding: 0px;">
2 = SharePoint</div>
</li>
<li style="box-sizing: border-box; font-size: 1em; margin-left: 0px; margin-top: 18px; padding-left: 6px;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1em; line-height: 1.5; padding: 0px;">
3 = Classic SharePoint</div>
</li>
</ul>
</td></tr>
<tr style="border: 0px !important; box-sizing: border-box; padding: 0px !important; vertical-align: top;"><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
UserAgent</div>
</td><td style="box-sizing: border-box; margin: 0px; padding: 4px 10px 4px 5px; vertical-align: top;"><div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
A string that contains information about the device and software in use (such as browser type and version).</div>
<div style="box-sizing: border-box; color: #2f2f2f; font-family: "Segoe UI", "Segoe UI Web", "Segoe UI Symbol", wf_segoe-ui_normal, "Helvetica Neue", "BBAlpha Sans", "S60 Sans", Arial, sans-serif; font-size: 1.6em; line-height: 1.5; padding: 0px;">
<br /></div>
</td></tr>
</tbody></table>
<br />
Microsoft article "<a href="https://support.office.com/en-us/article/Open-and-use-the-Web-Part-Maintenance-Page-EFF9CE22-D04A-44DD-AE83-AC29A5E396C2" target="_blank">Open and use the web part maintenance page</a>"Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-20635744798416785682018-06-27T18:23:00.001+03:002018-06-27T18:23:26.757+03:00SharePoint Online Performance. Easy Way to Capture MetricsI've stumbled across an interesting Chrome Extension <a href="https://chrome.google.com/webstore/detail/page-diagnostics-for-shar/inahogkhlkbkjkkaleonemeijihmfagi" target="_blank">Page Diagnostics for SharePoint Chrome extension</a>. It shows some useful info on the page performance.<br />
<br />
<br />
Microsoft Article "<a href="https://support.office.com/en-us/article/use-the-page-diagnostics-tool-for-sharepoint-online-dbab2593-dc6a-40f7-adfe-031b9baa620f" target="_blank">Use the Page Diagnostics tool for SharePoint Online</a>"<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9fSDNe6l6F1KQlFrecuvKKCXERW3Bqafta57h7dKt90e6PXsujRKWeEtpCwKMSOlKXSMS1Doxut-LGBHbUlQLYYM4txWPizLQlLRuhOk6TuSsBjV4qlM3hO1Vm_W42DwVZuWeFUj0D-bh/s1600/Page+Diagnostics.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="645" data-original-width="573" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9fSDNe6l6F1KQlFrecuvKKCXERW3Bqafta57h7dKt90e6PXsujRKWeEtpCwKMSOlKXSMS1Doxut-LGBHbUlQLYYM4txWPizLQlLRuhOk6TuSsBjV4qlM3hO1Vm_W42DwVZuWeFUj0D-bh/s1600/Page+Diagnostics.png" /></a></div>
<br />
<br />
In my case <b>SPRequestDuration </b>and <b>SPIISLatency </b>were not displayed, but you can get these values by simply pressing F12 and typing g_iisLatency and/or g_duration in the console:<br />
<b>g_iisLatency </b>- Shows network latency between the client browser and the IIS server<br />
<b>g_duration </b>- Shows the time it took the page to be returned to the client browser<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtafPI_Pt8ulEUHwObFDgWU9XZAi58wdjTSnVZJEdnW3WoWuU6NXkLvWKq-X8UTWVfP9SAXplkgLjShad7-Xc8BDjFfbxTqEiLlSKmUH3_4FcWUCswTsDSl2L9r8dwYM3DHP4gP6qybCyh/s1600/latency.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="75" data-original-width="161" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtafPI_Pt8ulEUHwObFDgWU9XZAi58wdjTSnVZJEdnW3WoWuU6NXkLvWKq-X8UTWVfP9SAXplkgLjShad7-Xc8BDjFfbxTqEiLlSKmUH3_4FcWUCswTsDSl2L9r8dwYM3DHP4gP6qybCyh/s1600/latency.png" /></a></div>
<br />
<br />
<b>Update:</b><br />
I've found out that g_iisLatency and g_duration only show up in the classic pages.<br />
<br />
<br />
<br />
<br />Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-54723547242350027242018-06-23T00:10:00.003+03:002018-06-23T00:11:36.578+03:00Creating Forms for SharePoint Online using PowerApps, AngularJs, React or NintexHere my short presentation on the best options of creating forms in office 365, SharePoint Online<br />
<br />
Disclaimer. I've made a couple of mistakes:<br />
1. There is <u><b>no</b></u> mobile app for Microsoft Forms. But it MS Forms links open fine in any mobile browser. I guess there is no point in having the app in the first place.<br />
2. The last app I've demonstrated was written using React+TypeScript, not AngularJs.<br />
<br />
<iframe allow="autoplay; encrypted-media" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/Deo_E1icTq0" width="560"></iframe>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-10846865816847903382018-06-22T23:55:00.002+03:002018-06-23T00:06:52.332+03:00Determine if SharePoint has enough memory allocated to the distributed cache serviceAfter reading half a dozen articles explaining how to eyeball and calculate the distributed cache size I was wondering: Why no one suggests just to check the current consumption before changing anything? Here is a scary thought: What if we have a ton of memory and we don't need to add any more? I know, this sounds revolutionary.<br />
<br />
This is a quick script that I've slapped together to show 1) maximum allocated memory for the Distributed cache. 2) current usage for all AppFabric caches on the current server.<br />
<br />
So, before bumping the Distributed cache, test the current consumption with the script below.<br />
<br />
<br />
<pre class="brush: powershell; highlight: [30, 31, 32, 34, 42]; ">
###### DETERMINE IF YOU HAVE ENOUGH MEMORY ALLOCATED TO DISTRIBUTED CACHE:
Add-PSSnapin Microsoft.SharePoint.Powershell
Use-CacheCluster
$hostname = hostname
$configuration = Get-AFCacheHostConfiguration -ComputerName $hostname -CachePort "22233"
Write-host Maximum Size: $($configuration.size)MB HostName: $($configuration.HostName) -ForegroundColor Blue
# Get-AFCache | % {Get-AFCacheConfiguration -CacheName $_.CacheName}
$caches = Get-AFCache | % {Get-AFCacheConfiguration -CacheName $_.CacheName}
foreach($cache in $caches){
$stats = Get-AFCacheStatistics $cache.CacheName
Write-host $cache.CacheName -ForegroundColor Green Cache.
Write-host Usage: $($stats.Size / 1MB) MB
Write-host
}
###### DETERMINE IF YOU HAVE ENOUGH MEMORY ALLOCATED TO DISTRIBUTED CACHE END
</pre>
<br />
Here is the sample result:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6o0OXPyOovnSL5ofSxGlgqO5GIYy1X4S1w-LXkFKq3NOOJp7Jf26Fn7kVvCFxar_MJ2rK-90C4LitBjfzwbE-XguPmuO7BPfQyXh2TLqORL-kGIL-w1d2vn-U9halr0DGZ33mdMD1tNj/s1600/Results.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="567" data-original-width="755" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhd6o0OXPyOovnSL5ofSxGlgqO5GIYy1X4S1w-LXkFKq3NOOJp7Jf26Fn7kVvCFxar_MJ2rK-90C4LitBjfzwbE-XguPmuO7BPfQyXh2TLqORL-kGIL-w1d2vn-U9halr0DGZ33mdMD1tNj/s1600/Results.png" /></a></div>
<br />
<div>
<br /></div>
Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-42277473768029231312017-11-16T20:59:00.000+03:002017-11-16T21:04:46.643+03:00SPPP Presentation<p> <iframe src="//www.slideshare.net/slideshow/embed_code/key/kHmhbz8LKUlFJj" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="//www.slideshare.net/secret/kHmhbz8LKUlFJj" title="Sppp presentation" target="_blank">Sppp presentation</a> </strong> from <strong><a href="https://www.slideshare.net/DenisMolodtsov1" target="_blank">Denis Molodtsov</a></strong> </div>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-6720277486374739762017-02-20T05:42:00.001+03:002017-02-20T05:42:07.285+03:00Hide .js and .js.map files when using TypeScript in Visual Studio Code<p>TypeScript is awesome, but what if I don’t want to see extra .js and .js.map files everywhere that are polluting your file explorer in Visual Studio Code?</p> <p>Here is an easy solution:</p> <p>- Open user settings:</p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0YrPmHICSJOB7p6BcHcmUGyikymyufh0IvzC142bjr6FjToKmLh6d0k8oJcm8zOjqsASMSg-Qdh8Ce2P_Zg9uTF1l0eiv66gvcFu7l8O1j-eG2WMyUR61Z2F9X-nHWv72wJhbivr9B5_J/s1600-h/image%25255B4%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF4utqE6bsjxlbr6ziyncDwErfSQ9X1_ypZmn-Dbb3mj0kcY4wH_oC0qJJB0DJpHl2R8-6s_CBLlx4r6vG1xYbk-0OFYG-pKU_vsKGU_R5Ht6UXatxP2QDh3MYw_xc9DSPNuOBMgs62DDH/?imgmax=800" width="320" height="399"></a></p>- Add "files.exclude" property to the user settings or to the workspace settings: <pre class="brush:js">"files.exclude":
{
"**/*.js*": {"when": "$(basename).ts"},
"**/*.js.map": true
}
</pre>
<p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUUCDuBJqzvk_11pHqDdSO28OrZPts2sKVmOSGrHhtDJ4yXK4MCsKnbQH-k2ZdQdO53pFA47fe9_XREHBIlI4Z0Uns9TgPFxQJ1nfe-Xz1GZZQz7bHot1M9Amo4I3W43tSuy8aeYX_cwIz/s1600-h/image%25255B8%25255D.png"><img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBR96Xjou2VyVdowgpQAh7E1mne47tJmt3cnAr_U9RBLqVPaiuuT6nKVpBs8dh8usYF0pNLlgNVG9iozAfwgDADHFQo3gk8wTqWSZ7iEQ_px1aNNl0BR5k-1ywBw93T-sJL0ROSsZbJnBg/?imgmax=800" width="439" height="198"></a></p>
<p>Done:</p>
<p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgn_oUf_J_4y74XYDLRaax1oaKKeRLk_5giyjC56zFfCcVb_IaeS9UCareaFCWRpAC6QOB7y83NdN4rtMRNXM1wgEcay_6WMMFVfWzqwkse0uKdsdBnyC_UHyxuICdyI99adE9-abCIUBT6/s1600-h/image%25255B15%25255D.png"><img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL306EoJQa6oDbTkYQl6g3RYSOynUK7IFuugZIwd_H0HRbK0U-lmpdLMs81ZO-xxKIcts9ktyo8LTtUTAwpYEZ2b9r30wbVLI0JaJz-ak1qRNajN6nII4NyDtHhHb_d192sRBYosI6p4HB/?imgmax=800" width="375" height="217"></a></p>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-1131331810968594982017-02-20T04:19:00.001+03:002017-10-09T07:32:06.416+03:00AngularJs + TypeScript with SharePoint<br />
Getting intellisense in Visual Studio Code for AngularJs in TypeScript is not as straightforward as one would expect. Follow these steps below to get it working<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOjzYb6RRXFW8p1EBYgmMKq36DCahyphenhyphenYTMbxxxdTmGuW-jzX9yWrski3iMV4p0uNPGqz5iQQVHVwAaUezQxDieA8ChNol_qygwuHwcfnwA4MqQ0rVhqNJJfM5aJMpI1DUEX8VfeHqLR4trj/s1600-h/image%25255B4%25255D.png"><img alt="image" border="0" height="414" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg6EMgmzLST3jr_Y4cIxefcSCuMfLtPz9Vvc3ZLF1NNoJMa1jU9uUHT9v9k8BrpSAj_tHjj1JzxDZO_VkbtTfo2mFjIAyTL5tQPdbEyqN6CV7Fd8oEE9bM0OYomYZfP_KlU7tz1HblGneBK/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="589" /></a><br />
Open Visual Studio Code<br />
Press CTRL+` and run these commands:<br />
<pre class="brush:js;">tsc –init
npm install typings –global
typings install dt~jquery --global --save
</pre>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFtoGYrz34Op8n7phXnqeSu3wtx7Gjj5lgC7qu9zgcxwG2VkwFEnGy7FuZMCNjYJrWpzagrIr2r0MDJMw5f0Svn04MFA687D8k8ZKJXkZm5qnbZlLOKSQUmLI7M6gUGSr-d_SgvkBXbUdQ/s1600-h/image%25255B10%25255D.png"><img alt="image" border="0" height="68" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXc0ns204EihOjJ1gILhP1MEcwgQ2BUnwsjoovSzDecehHKUaaajV4Zg17LmgH8vkgx8vuskQ1DWm8qkpSlXoI1rO5rWBLGL0PJFMOYRecl3a8qMsnHpYst9KxBgfHRgsPoRJtJ-fJNkdQ/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="507" /></a><br />
<pre class="brush:js;">typings install dt~angular
</pre>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicIsXzVTlkevePtParYels0h95tmDbdF29gn4KBemeCZDasGgdYZSem7WrdUP2l-Scve-2Oa9-J1R_ysHIEqpL7INi09yhnKKzt2Eogw6XyFkhjOWqQfIVXn0e_6jt9n9HzsMa5Y1vBhUq/s1600-h/image%25255B14%25255D.png"><img alt="image" border="0" height="67" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip0BjGr5KnPG1BW8RLzMMGmzD-PXuS4Cxg-_mmDuMrBMijq88KzawgKRHb853xiwY-uiHMMvgdl5JB9B8ekvSlAGontNsOLseZ1lBnxm5AFqjgYOW92cVS4GwBU-KqKfuE4zlx2v-M3SZH/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="508" /></a><br />
Now, if you run tsc compiler, your will get errors like so:<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYJU1ReOiDHy6Ae60o1A89F_JLQNq49M3QycJ0c1BtrCByWF5Y7ZADjsDBwio37tJw5_lIfP45F2P5YRt5A3LaZK2nvimSBdXAntpqFR0OHst7ESjAn9A_cxZw3GwbPydaQRbVZDs6iLWO/s1600-h/image%25255B6%25255D.png"><img alt="image" border="0" height="52" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHnVGgxvzvgtSjgCKK0Q04G-Ic-yggDrVTAtx0PNzDGZ34zt5zAf7AX9VjByOGBVvJWLD96ej16uXIBIp6YvBrZTaYUOR480gNdPaZcqNO3-M-96Z6gDlNQnX-oIjV6HNrUrf8xjwm4EtB/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="689" /></a><br />
in order to fix it:<br />
- create a <strong>global.d.ts</strong> file inside typings folder. It will be a new entry point for your TypeScript<br />
- add<strong> import * as angular from "angular" </strong>as a first line<br />
- add <strong><span style="color: lime;"><span style="color: green;">///</span> </span><<span style="color: blue;">reference</span> <span style="color: #809ec2;">path</span>="index.d.ts" /></strong> following that:<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmYtZz50lZq-NTRyESHfJCOmNITJXuIL5opmytMCf09_hDNKcVyWw-205Ahqdpi4mNEUqACrBClP3vjOBIs6RoSQ1w6jbNwfiVceO4oa6yp9C-tp_8UWIv3p90OX4O4-q3BAU9Hw7S-NVa/s1600-h/image%25255B16%25255D.png"><img alt="image" border="0" height="110" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRD3P2vTYvwTIuaUGBOkc9rTsvMpYAMcE5Xzqlv-1ysFtfQPV4_nn8aetHzKpUbP0F491KhlIL6j362PFHSzmv-hKRTTqHTEUlL9R5M1AuAEN13ylzzcLsXF5spqHYiWa_0CHTr9CSYk-v/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="443" /></a><br />
Modify <strong>tsconfig.json</strong> include "files" property to reference the new <strong>global.d.ts</strong> file: :<br />
<pre class="brush:js; highlight: [7, 8]; html-script: true">{
"compilerOptions": {
"target": "es5",
"sourceMap": true
},
"files": [
"typings/global.d.ts"
]
}
</pre>
<a href="https://lh3.googleusercontent.com/-y732NOq41gM/WKuMdG967VI/AAAAAAAAETU/3dzaabVPA1Y/s1600-h/image%25255B26%25255D.png"><img alt="image" border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1uXnTv-9HpcQGLq7ijsHNIvNGW940Fct1tp0nQXt3iZnHR0SnXICGcJZZqfy1obtcmaJZS210eWXOjWisaYrFCHstndhyk47A_z1NopOOoIagMtOZZTCjHmdx-FMU2JW7By91QiweASLy/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="258" /></a><br />
<br />Let TypeScript compiler know which folder contains your .ts code by adding “include” property to the <strong>tsconfig.json</strong> file:<br />
<pre class="brush:js">"include": ["src/*"]</pre>
where src/ is your source code folder
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilPx0IQGF-qosaTcG4DCTdqidagmAvk3RMyPLHG4zIQmfS4jcdgipS5V4SesvwLIAN6mD14V2UOsWFttBqJPHyhHMpPU2iWJTuKimP1a8CZKLKloN3JtbOSJv2oTPbaX8VV0E_5qNkL6tt/s1600-h/image%25255B22%25255D.png"><img alt="image" border="0" height="219" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSc7i8GlPvjN-dPkRebzGe0DlKw3IJ19X3NBmnkschoVVGWkkGdYCuJN6cfauj6Ea70CKeygpjQDVQyblbsREGNYRcrLgiAefOPpnBJJkGRyH0k6fJUXIVI5flHNPJ2fF2W2QC4gpaxRH3/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /></a>
Run TypeScript compiler and start watching the files:
<br />
<pre class="brush:js;">tsc --watch
</pre>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivaS9YeN6n1hRAmLUn83iLzrYM0nAb9gLOl4TgSCpLMxDDd4JElgg1xPfvZOwF3a5HVLEPPULCGLPY7ShEVXgqXNQAF7Axii-u3mbwJOdj0sOaBkcDX6tz1ZWC-EkLcEBPSZApE07U5e7X/s1600-h/image%25255B26%25255D.png"><img alt="image" border="0" height="67" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnmE0SyDjhyyo8XzMzJE1oFLl0XrUE5YyLZFAuChvkqiErhyphenhyphenI6w-Of4Z9skDBuCX0UVQtwfNfwObRSpEpMv9gxtLtiRrE-zceiZaIT0ZZmvRgZ1FiZ2J6DLTtOLADFhy1c7yCQ2BaTDLQl/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="506" /></a><br />
Now you get angular and jQuery intellisense in TypeScript:<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDjSOFRk43MVIBDSvcIQ6fTwL_El40xN2-3t9KUmIuMxE98C7u-H3LtaxPnPLavvX5tBlkNud5-GRFO1gYW1-gFOZdadwVkgz4vZbBOkY9R2d0afuHJY-ZkjElpg-Cm9xanyAaF7yhwDGz/s1600-h/image%25255B30%25255D.png"><img alt="image" border="0" height="271" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgw4zvj-R_uMvL7Clc5ZeVjbIA5KU7vPqmevSrJQhHMKsLYmZQLLMygZKHUYFe4EH6zHxo1jD_3w0MZ90hqS8nh5BVc3f1C-n32NOZU75w1cWSY0anG9bWbeCZf2t6gByJhhgOXV_Fqwomz/?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="525" /></a><br />
Well. it’s not really SharePoint specific, but it’s nice to know SharePoint developers can use the same steps.<br />
If you are searching for a quick start with SharePoint and modern tools have a look at <a href="https://www.linkedin.com/today/author/0_2kPQ3CxbbaZRaRGjRG3bA7?trk=prof-sm">these articles by Andrew Koltyakov</a>.Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-84600634453165288972016-11-02T22:55:00.001+03:002016-11-02T22:55:27.534+03:00Find Configuration Database Connection string in the Registry<p>SharePoint 2010:</p> <p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\Secure\ConfigDb </p> <p>SharePoint 2013:</p> <p>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\15.0\Secure\ConfigDb </p> <p><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAu12bF0EYlN9clMbnObEkef2eO44M_7LaEYMYSiH05AFtXGAuRKfnh3nfZDPGO7OiAxJEnzBX5TzLsvosmGkyjbdIO3s9KN4nHDhwCPGP1e9EOa9_G77O6qZWslRYNnUSevuqdX2MSkz5/s1600-h/pic%25255B10%25255D.png"><img title="pic" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="pic" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh96mzo0tPZsKlV0hiSh3ZHRKjJ4o6uaK90eW1LJR7XN4Y56kGzpejSZeHZIHLAKDryuCDb87Z7r7jkvVZ145I1AOY1cQdUxQHqgrmA6hN5zD71ZSXkpczumqaHZvtMDRIKFOQG4Ic-Z2Ou/?imgmax=800" width="667" height="98"></a></p>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-41032387541496558792016-10-22T20:57:00.001+03:002016-10-22T20:57:33.603+03:00The Best Way to Develop SharePoint Client Side Applications<p> </p> <p>Please, read <a href="https://www.linkedin.com/today/author/0_2kPQ3CxbbaZRaRGjRG3bA7?trk=prof-sm">these articles</a> by Andrew Koltyakov.</p> <p>He explains in great detail how to properly develop client side solutions using tools like node, gulp, Visual Studio Code with SharePoint</p>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-57009490337556268302016-10-21T23:52:00.001+03:002016-10-21T23:52:38.443+03:00Add jQuery to any page in a console<pre class="brush: js">
var script = document.createElement("script");
script.type="text/javascript";
script.src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js";
document.getElementsByTagName('head')[0].appendChild(script);
</pre>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-55028230160716363812016-10-11T22:55:00.001+03:002016-10-11T22:55:16.061+03:00Stefan Goßner: PSCONFIGUI.EXE vs PSCONFIG.EXE<p>Nice article: <a href="https://blogs.technet.microsoft.com/stefan_gossner/2015/08/20/why-i-prefer-psconfigui-exe-over-psconfig-exe/">Why I prefer PSCONFIGUI.EXE over PSCONFIG.EXE</a> by Stefan Goßner </p> <p>In case you need to use PSCONFIG.EXE to automate some tasks you should use the following command:</p><pre class="brush: powershell">PSConfig.exe -cmd upgrade -inplace b2b -wait -cmd applicationcontent -install -cmd installfeatures -cmd secureresources -cmd services -install
</pre>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-44030241456579739002016-10-07T16:19:00.001+03:002016-10-07T16:19:04.906+03:00PowerShell script for monitoring SharePoint WFE's and SQL Server back-ends<pre class="brush: ps">#counters.txt contains a list of performance counters
#collect
$fileName = "test{0:yyyyMMdd-HHmmss}.xml" -f (Get-Date)
get-counter -content (get-content counters.txt) -MaxSamples 2 -sampleinterval 5 | Export-clixml $fileName
#save the results to the blg format. This will allow opening it with Performance Monitor
$fileName = "test{0:yyyyMMdd-HHmmss}.blg" -f (Get-Date)
get-counter -content (get-content counters.txt) -MaxSamples 2 -sampleinterval 5 | Export-Counter $fileName
</pre><strong>counters.txt contents:</strong> <br><pre class="brush: plain">\.NET CLR Memory(*)\% Time in GC
\ASP.NET\Application Restarts
\ASP.NET\Request Execution Time
\ASP.NET\Requests Rejected
\ASP.NET\Requests Queued
\ASP.NET\Worker Process Restarts
\ASP.NET\Request Wait Time
\ASP.NET Applications(*)\Requests/Sec
\LogicalDisk(*)\% Idle Time
\Memory\Available MBytes
\Memory\% Committed Bytes In Use
\Memory\Page Faults/sec
\Memory\Pages Input/sec
\Memory\Page Reads/sec
\Memory\Pages/sec
\Memory\Pool Nonpaged Bytes
\Network Interface(*)\Bytes Total/sec
\Network Interface(*)\Packets/sec
\Paging File(*)\% Usage
\PhysicalDisk(*)\Current Disk Queue Length
\PhysicalDisk(*)\% Disk Time
\PhysicalDisk(*)\Disk Transfers/sec
\PhysicalDisk(*)\Avg. Disk sec/Transfer
\Process(*)\% Processor Time
\Process(*)\Page Faults/sec
\Process(*)\Page File Bytes Peak
\Process(*)\Page File Bytes
\Process(*)\Private Bytes
\Process(*)\Virtual Bytes Peak
\Process(*)\Virtual Bytes
\Process(*)\Working Set Peak
\Process(*)\Working Set
\Processor(*)\% Processor Time
\Processor(*)\Interrupts/sec
\Redirector\Server Sessions Hung
\Server\Work Item Shortages
\System\Context Switches/sec
\System\Processor Queue Length
\Web Service(*)\Bytes Received/sec
\Web Service(*)\Bytes Sent/sec
\Web Service(*)\Total Connection Attempts (all instances)
\Web Service(*)\Current Connections
\Web Service(*)\Get Requests/sec
</pre>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-85405954604635098602016-10-07T06:24:00.001+03:002016-10-07T06:24:39.890+03:00Show IIS Pool passwords in clear text<h2>Windows 2012+ Solution:</h2> <h3>Method #1</h3><br><pre class="brush: ps;">Add-WindowsFeature Web-WMI | Format-List
Get-CimInstance -Namespace root/MicrosoftIISv2 -ClassName IIsApplicationPoolSetting -Property Name, WAMUserName, WAMUserPass |
select Name, WAMUserName, WAMUserPass
</pre>
<p> </p>
<h3>Method #2</h3><br><pre class="brush: ps;">(Get-Item website).ProcessModel
(Get-Item website).ProcessModel.username
(Get-Item website).ProcessModel.password
</pre>
<p> </p>
<h2></h2>
<h3>Windows 2008/R2 Solution</h3><br><pre class="brush: ps;">cd C:\Windows\system32\inetsrv
.\appcmd.exe list apppool /text:*
</pre>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-46349652047446872252016-10-07T06:12:00.001+03:002016-10-07T06:15:41.556+03:00Add super user and super reader via PowerShell<pre class="brush: powershell; highlight: [30, 31, 32, 34, 42]; ">
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
####SET ACCOUNT NAMES (Replace Domain and UserName)
#SUPER USER ACCOUNT – Use your own Account (NB: NOT A SHAREPOINT ADMIN)
$sOrigUser= "domain\SP_SuperUser"
$sUserName = "SP_SuperUser"
#SUPER READER ACCOUNT – Use your own Account (NB: NOT A SHAREPOINT ADMIN)
$sOrigRead = "domain\SP_SuperRead"
$sReadName = "SP_SuperRead"
$apps = get-spwebapplication
foreach ($app in $apps) {
#DISPLAY THE URL IT IS BUSY WITH
$app.Url
if ($app.UseClaimsAuthentication -eq $true)
{
# IF CLAIMS THEN SET THE IDENTIFIER
$sUser = "I:0#.w|" + $sOrigUser
$sRead = "I:0#.w|" + $sOrigRead
}
else
{
# CLASSIC AUTH USED
$sUser = $sOrigUser
$sRead = $sOrigRead
}
# ADD THE SUPER USER ACC – FULL CONTROL (Required for writing the Cache)
$policy = $app.Policies.Add($sUser, $sUserName)
$policyRole = $app.PolicyRoles.GetSpecialRole([Microsoft.SharePoint.Administration.SPPolicyRoleType]::FullControl)
$policy.PolicyRoleBindings.Add($policyRole)
$app.Properties["portalsuperuseraccount"] = $sUser
$app.Update()
# ADD THE SUPER READER ACC – READ ONLY
$policy = $app.Policies.Add($sRead, $sReadName)
$policyRole = $app.PolicyRoles.GetSpecialRole([Microsoft.SharePoint.Administration.SPPolicyRoleType]::FullRead)
$policy.PolicyRoleBindings.Add($policyRole)
$app.Properties["portalsuperreaderaccount"] = $sRead
$app.Update()
}
</pre>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-88525250255946702622016-10-07T05:32:00.000+03:002016-10-07T06:18:21.408+03:00Syntax highlighting. List of brushes<p><a title="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/" href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/">http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/</a></p> <p><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/demo/">http://alexgorbatchev.com/SyntaxHighlighter/manual/demo/</a></p> <p><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/csharp.html">C#</a><br>c-sharp, csharp<br>shBrushCSharp.js</p> <p><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/css.html">CSS</a><br>css<br>shBrushCss.js <p><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/javascript.html">JavaScript</a><br>js, jscript, javascript<br>shBrushJScript.js <p><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/plain.html">Plain Text</a><br>plain, text<br>shBrushPlain.js <p><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/powershell.html">PowerShell</a><br>ps, powershell<br>shBrushPowerShell.js <p><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/sql.html">SQL</a><br>sql<br>shBrushSql.js <p><a href="http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/xml.html">XML</a><br>xml, xhtml, xslt, html, xhtml<br>shBrushXml.js</p>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-42405217789071080562016-10-07T04:43:00.000+03:002016-10-07T04:43:36.746+03:00Hide Attachments from specific SharePoint Group<pre style="background: #f0f0f0; border: 1px dashed #cccccc; color: black; font-family: "arial"; font-size: 12px; height: auto; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 99%;"><code style="color: black; word-wrap: normal;"> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js' type="text/javascript">
</script>
<script type="text/javascript">
$(function() {
$.ajax({
url: "/_api/web/currentUser?$select=Groups/Title&$expand=Groups",
method: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
success: function(data) {
for (var k = 0; k < data.d.Groups.results.length; k++) {
var groupName = data.d.Groups.results[k].Title;
if (groupName == 'OECTA EXEC GL') {
$("[scriptclass='SharePointFileAttachmentCollection'], [scriptclass='SharePointFileAttachmentContainer']").hide();
}
}
},
error: function(data) {
console.log(data);
}
});
});
</script>
</code></pre>
Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-81512839867105804922015-10-01T11:30:00.000+03:002015-10-01T11:30:05.208+03:00Target SharePoint layouts pages with CSS/* This will find MyID and hide it only on layouts pages */<br />
form[action^='/_layouts/'] #MyID{<br />
display:none;<br />
}Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-12844315912118132372015-10-01T10:53:00.002+03:002016-10-07T16:07:47.896+03:00SPList.NeedUpdateSiteClientTag property<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 13px; line-height: 18px;"><b>SPList</b>.<b>NeedUpdateSiteClientTag </b>is a</span></span><span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif; font-size: 13px; line-height: 18px;"> boolean value that determines whether to editing documents in this list should increment the ClientTag for the site. The tag is used to allow clients to cache JS/CSS/resources that are retrieved from the Content DB, including custom CSR templates</span><br />
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif; font-size: 13px; line-height: 18px;"><br /></span>
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif; font-size: 13px; line-height: 18px;"></span><br />
<span style="color: #2a2a2a; font-family: segoe ui, lucida grande, verdana, arial, helvetica, sans-serif;"><span style="font-size: 13px;">When an item in this list is modified, the application file cache version for the site that contains this list MUST be updated.</span></span><br />
<div>
<br /></div>
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif; font-size: 13px; line-height: 18px;"><br /></span>
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 13px; line-height: 18px;"><a href="https://msdn.microsoft.com/EN-US/library/microsoft.sharepoint.splist.needupdatesiteclienttag.aspx">MSDN</a></span></span>Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0tag:blogger.com,1999:blog-1007779765053345576.post-12369227478013745232015-09-03T14:18:00.002+03:002015-09-03T14:18:30.068+03:00Encode and decode field names from display name to internal name<a href="http://www.n8d.at/blog/encode-and-decode-field-names-from-display-name-to-internal-name/" target="_blank">Encode and decode field names from display name to internal name</a><br />
<br />
Credits to <b>Stefan Bauer</b><br />
<br />
<br />
<div class="crayon-line" id="crayon-55e820762fcef356987006-1" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-m" style="box-sizing: border-box; color: rgb(128, 0, 128) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">private</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-t" style="box-sizing: border-box; color: rgb(128, 0, 128) !important; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">string</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-e" style="box-sizing: border-box; color: teal !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">DecodeInternalField</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">(</span><span class="crayon-t" style="box-sizing: border-box; color: rgb(128, 0, 128) !important; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">string</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-v" style="box-sizing: border-box; color: rgb(0, 45, 122) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">toDecode</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">)</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-2" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">{</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-3" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-st" style="box-sizing: border-box; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">if</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">(</span><span class="crayon-v" style="box-sizing: border-box; color: rgb(0, 45, 122) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">toDecode</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-o" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">!=</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-t" style="box-sizing: border-box; color: rgb(128, 0, 128) !important; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">null</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">)</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-4" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">{</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-5" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-t" style="box-sizing: border-box; color: rgb(128, 0, 128) !important; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">string</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-v" style="box-sizing: border-box; color: rgb(0, 45, 122) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">decodedString</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-o" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">=</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-v" style="box-sizing: border-box; color: rgb(0, 45, 122) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">toDecode</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">.</span><span class="crayon-e" style="box-sizing: border-box; color: teal !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">Replace</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">(</span><span class="crayon-s" style="box-sizing: border-box; color: rgb(221, 17, 68) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">"_x"</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">,</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-s" style="box-sizing: border-box; color: rgb(221, 17, 68) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">"%u"</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">)</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">.</span><span class="crayon-e" style="box-sizing: border-box; color: teal !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">Replace</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">(</span><span class="crayon-s" style="box-sizing: border-box; color: rgb(221, 17, 68) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">"_"</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">,</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-s" style="box-sizing: border-box; color: rgb(221, 17, 68) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">""</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">)</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">;</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-6" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-st" style="box-sizing: border-box; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">return</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-v" style="box-sizing: border-box; color: rgb(0, 45, 122) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">HttpUtility</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">.</span><span class="crayon-e" style="box-sizing: border-box; color: teal !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">UrlDecode</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">(</span><span class="crayon-v" style="box-sizing: border-box; color: rgb(0, 45, 122) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">decodedString</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">)</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">;</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-7" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">}</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-8" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-st" style="box-sizing: border-box; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">else</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-9" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">{</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-10" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-st" style="box-sizing: border-box; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">return</span><span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-t" style="box-sizing: border-box; color: rgb(128, 0, 128) !important; font-family: inherit; font-size: inherit !important; font-weight: bold !important; height: inherit; line-height: inherit !important;">null</span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">;</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-11" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-h" style="box-sizing: border-box; color: rgb(0, 111, 224) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;"> </span><span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">}</span></div>
<div class="crayon-line" id="crayon-55e820762fcef356987006-12" style="background: 0px 50% rgb(248, 248, 255); border: 0px; box-sizing: border-box; font-family: Monaco, MonacoRegular, 'Courier New', monospace; font-size: 12px; height: inherit; line-height: 15px; margin: 0px; padding: 0px 5px; white-space: pre;">
<span class="crayon-sy" style="box-sizing: border-box; color: rgb(51, 51, 51) !important; font-family: inherit; font-size: inherit !important; font-weight: inherit !important; height: inherit; line-height: inherit !important;">}</span></div>
Denis Molodtsovhttp://www.blogger.com/profile/08493433394183206907noreply@blogger.com0