You can find other videos in my YouTube chanel.
Create your custom desing SharePoint master page: brand SharePoint the cool way
Manipulating SharePoint list items with Android (JAVA) and NTLM Authentication
Regarding to my previous post about manipulation of SharePoint list items with PHP I have been struggling with the same problem to connect SharePoint Web Services to Android even longer. I was able to come up with a solution quite fast but the SharePoint site had to be enabled for anonious access. And another issue here: you can just read the SharePoint Web Service. Don’t forget to include KSOAP2 library as external JAR.
I was browsing for some kind of a solution for quite some time. And if there were some kind of directions towards a probable solution I was not developer enough to figure it out on my own.
The sample without the need of authentication I was able to figure out with help from article in stackoverflow.com. If you google a bit you will find quite a bunch of articles about changing temparature or about the halloworld webservice. Both of them hosted in http://tempuri.org. The article is talking about calling a .NET WebService to change Celsius to Farenheit and vice versa. Anyways… was a very good start.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | package com.balavec.ws; import java.io.IOException; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.widget.TextView; public class wsActivity extends Activity { /** Called when the activity is first created. */ TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv = (TextView)findViewById(R.id.textView1); tv.setMovementMethod(ScrollingMovementMethod.getInstance()); HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://localhost/_vti_bin/Lists.asmx"); try { StringEntity se = new StringEntity( "<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/"><listName>quotes</listName><rowLimit>50</rowLimit></GetListItems></soap:Body></soap:Envelope>", HTTP.UTF_8); se.setContentType("text/xml"); httppost.setEntity(se); HttpResponse httpresponse = httpclient.execute(httppost); HttpEntity resEntity = httpresponse.getEntity(); tv.setText("Status OK: \n" + EntityUtils.toString(resEntity)); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); tv.setText("Status NOT OK: \n" + e.getMessage()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); tv.setText("Status NOT OK: \n" + e.getMessage()); } } } |
But if you want to lock your Web Services (SharePoint Lists) behind NTLM (windows) authentication, you will have to include KSOAP2 and JCIFS library.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | package com.balavec.ws; import java.io.IOException; import jcifs.ntlmssp.Type1Message; import jcifs.ntlmssp.Type2Message; import jcifs.ntlmssp.Type3Message; import jcifs.util.Base64; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.auth.NTLMScheme; import org.apache.http.impl.client.AbstractHttpClient; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.CoreProtocolPNames; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.app.Activity; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.widget.TextView; import org.apache.http.auth.AuthScheme; import org.apache.http.auth.AuthSchemeFactory; import org.apache.http.auth.AuthScope; import org.apache.http.auth.NTCredentials; import org.apache.http.impl.auth.NTLMEngine; import org.apache.http.impl.auth.NTLMEngineException; public class wsActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView)findViewById(R.id.textView1); tv.setMovementMethod(ScrollingMovementMethod.getInstance()); HttpClient httpclient = new DefaultHttpClient(); ((AbstractHttpClient) httpclient).getAuthSchemes().register("ntlm",new NTLMSchemeFactory()); NTCredentials creds = new NTCredentials("username", "password", "", "domain"); ((AbstractHttpClient) httpclient).getCredentialsProvider().setCredentials(AuthScope.ANY, creds); HttpConnectionParams.setConnectionTimeout(httpclient.getParams(), 5000); HttpPost httppost = new HttpPost("http://localhost/_vti_bin/Lists.asmx"); httppost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, false); try { StringEntity se = new StringEntity( "<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetListItems xmlns="http://schemas.microsoft.com/sharepoint/soap/"><listName>quotes</listName><rowLimit>50</rowLimit></GetListItems></soap:Body></soap:Envelope>", HTTP.UTF_8); se.setContentType("text/xml"); httppost.setEntity(se); HttpResponse httpresponse = httpclient.execute(httppost); HttpEntity resEntity = httpresponse.getEntity(); tv.setText("Status OK: \n" + EntityUtils.toString(resEntity)); } catch (ClientProtocolException e) { e.printStackTrace(); tv.setText("Status NOT OK: \n" + e.getMessage()); } catch (IOException e) { e.printStackTrace(); tv.setText("Status NOT OK: \n" + e.getMessage()); } } // JCIFSEngine public class JCIFSEngine implements NTLMEngine { public String generateType1Msg( String domain, String workstation) throws NTLMEngineException { Type1Message t1m = new Type1Message( Type1Message.getDefaultFlags(), domain, workstation); return Base64.encode(t1m.toByteArray()); } public String generateType3Msg( String username, String password, String domain, String workstation, String challenge) throws NTLMEngineException { Type2Message t2m; try { t2m = new Type2Message(Base64.decode(challenge)); } catch (IOException ex) { throw new NTLMEngineException("Invalid Type2 message", ex); } Type3Message t3m = new Type3Message( t2m, password, domain, username, workstation, 0); return Base64.encode(t3m.toByteArray()); } } //NTLM Scheme factory public class NTLMSchemeFactory implements AuthSchemeFactory { public AuthScheme newInstance(final HttpParams params) { return new NTLMScheme(new JCIFSEngine()); } } } |
Manipulating SharePoint list items with PHP
For long time I’ve been playing around in my head with the idea to be able to connect to SharePoint Web Services with some third-party tools. Finaly I googled a bit and found quite few articles about it. I liked the most the one from http://davidsit.wordpress.com.
I am also attaching the the code for php version 5.3 with built in SOAP support. The only thing I added are the HTML tags and UTF-8 charset in order to display slovenian characters properly.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | <?php <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Manipulating SharePoint list items with PHP</title> </head> <?php //Authentication details $authParams = array('login' => 'yourUsername', 'password' => 'yourPassword'); /* A string that contains either the display name or the GUID for the list. * It is recommended that you use the GUID, which must be surrounded by curly * braces ({}). */ $listName = "TempList"; $rowLimit = '150'; /* Local path to the Lists.asmx WSDL file (localhost). You must first download * it manually from your SharePoint site (which should be available at * yoursharepointsite.com/subsite/_vti_bin/Lists.asmx?WSDL) */ $wsdl = "http://localhost/_vti_bin/Lists.asmx?WSDL"; //Creating the SOAP client and initializing the GetListItems method parameters $soapClient = new SoapClient($wsdl, $authParams); $params = array('listName' => $listName, 'rowLimit' => $rowLimit); //Calling the GetListItems Web Service $rawXMLresponse = null; try{ $rawXMLresponse = $soapClient->GetListItems($params)->GetListItemsResult->any; } catch(SoapFault $fault){ echo 'Fault code: '.$fault->faultcode; echo 'Fault string: '.$fault->faultstring; } echo '<pre>' . $rawXMLresponse . '</pre>'; //Loading the XML result into parsable DOM elements $dom = new DOMDocument(); $dom->loadXML($rawXMLresponse); $results = $dom->getElementsByTagNameNS("#RowsetSchema", "*"); //Fetching the elements values. Specify more attributes as necessary foreach($results as $result){ echo $result->getAttribute("ows_LinkTitle")."<br/>"; } unset($soapClient); ?> <body> </body> </html> |
In the article from David Dudok de Wit you will also find a solution for older PHP versions. You just have to include nusoap.php library
SharePoint Simple CMS for SharePoint 2010
You can find other videos in my YouTube chanel.
Joomla 1.5 Latest News Scroller Module
I have been searching for module similar to mod_scroll_news in Joomla 1.0 but was not able to find it anywhere. So i took the code from the already existing mod_latestnews and made few changes to it. It works for what I need just fine.
Maybe I will spend some more time on it and tweek it a bit to have some more custom settings …
It will display the title as a link and the contents of the articles in the section/category specified.
You can download the module here: mod_newscroller.
“Hallo World” in Objective-C
Below is a simple sample code in objecitve-c on how to write “Hallo World” string:
1 2 3 4 5 6 7 8 9 10 | #import <Foundation/Foundation.h> int main (int argc, const char * argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSLog (@"Hallo World"); [pool drain]; return 0; } |
Security Trimmed Controls in SharePoint
Suppose you want to display certain WebPart (or the entire page) to limited audience. You can do this using Security Trimmed Controls. It looks like:
1 2 3 | <Sharepoint:SPSecurityTrimmedControl runat=”server” Permissions=”DeleteListItems”> Only users with DeleteListItems permissions will be able to see this content. </SharePoint:SPSecurityTrimmedControl> |
All you have to do is wrap your control with this security control and set the correct permissions in the Permissions attribute. The Permissions attribute, when used in Visual Studio or Designer, will have intellisense and will be filled with the following properties obtained from http://msdn2.microsoft.com/en-us/library/microsoft.sharepoint.spbasepermissions.aspx. Whatever permissions you specify will be required by the user in order to view the control(s) inside of the SPSecurityTrimmedControl:
Member name | Description |
---|---|
EmptyMask | Has no permissions on the Web site. Not available through the user interface. |
ViewListItems | View items in lists, documents in document libraries, and view Web discussion comments. |
AddListItems | Add items to lists, add documents to document libraries, and add Web discussion comments. |
EditListItems | Edit items in lists, edit documents in document libraries, edit Web discussion comments in documents, and customize Web Part Pages in document libraries. |
DeleteListItems | Delete items from a list, documents from a document library, and Web discussion comments in documents. |
ApproveItems | Approve a minor version of a list item or document. |
OpenItems | View the source of documents with server-side file handlers. |
ViewVersions | View past versions of a list item or document. |
DeleteVersions | Delete past versions of a list item or document. |
CancelCheckout | Discard or check in a document which is checked out to another user. |
ManagePersonalViews | Create, change, and delete personal views of lists. |
ManageLists | Create and delete lists, add or remove columns in a list, and add or remove public views of a list. |
ViewFormPages | View forms, views, and application pages, and enumerate lists. |
Open | Allow users to open a Web site, list, or folder to access items inside that container. |
ViewPages | View pages in a Web site. |
AddAndCustomizePages | Add, change, or delete HTML pages or Web Part Pages, and edit the Web site using a SharePoint Foundation–compatible editor. |
ApplyThemeAndBorder | Apply a theme or borders to the entire Web site. |
ApplyStyleSheets | Apply a style sheet (.css file) to the Web site. |
ViewUsageData | View reports on Web site usage. |
CreateSSCSite | Create a Web site using Self-Service Site Creation. |
ManageSubwebs | Create subsites such as team sites, Meeting Workspace sites, and Document Workspace sites. |
CreateGroups | Create a group of users that can be used anywhere within the site collection. |
ManagePermissions | Create and change permission levels on the Web site and assign permissions to users and groups. |
BrowseDirectories | Enumerate files and folders in a Web site using Microsoft Office SharePoint Designer 2007 and WebDAV interfaces. |
BrowseUserInfo | View information about users of the Web site. |
AddDelPrivateWebParts | Add or remove personal Web Parts on a Web Part Page. |
UpdatePersonalWebParts | Update Web Parts to display personalized information. |
ManageWeb | Grant the ability to perform all administration tasks for the Web site as well as manage content. Activate, deactivate, or edit properties of Web site scoped Features through the object model or through the user interface (UI). When granted on the root Web site of a site collection, activate, deactivate, or edit properties of site collection scoped Features through the object model. To browse to the Site Collection Features page and activate or deactivate site collection scoped Features through the UI, you must be a site collection administrator. |
UseClientIntegration | Use features that launch client applications; otherwise, users must work on documents locally and upload changes. |
UseRemoteAPIs | Use SOAP, WebDAV, or Microsoft Office SharePoint Designer 2007 interfaces to access the Web site. |
ManageAlerts | Manage alerts for all users of the Web site. |
CreateAlerts | Create e-mail alerts. |
EditMyUserInfo | Allows a user to change his or her user information, such as adding a picture. |
EnumeratePermissions | Enumerate permissions on the Web site, list, folder, document, or list item. |
FullMask | Has all permissions on the Web site. Not available through the user interface. |
Perfect Full Page Background Image with CSS3
One of my latest findings in CSS3 is the full page background image. I owe this to acctually two sources. First is CSS-TRICKS and the second to ringvemedia.com.
1 2 3 4 5 6 7 8 9 | html { background: url(bg.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.jpg', sizingMethod='scale'); -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='bg.jpg', sizingMethod='scale')"; } |
You can also check out how it looks on my project site: Full Background with CSS3
jQuery animated swap div content on hover effect
This is a simple sample how to swap div content on mouse hover. Actually I first stumbled upon this web article: http://spoonfedproject.com/jquery/jquery-image-slide-on-hover-effect/. After making few changes I was able to swap actual content of a div instead of background.
Here is the javascript i used (don’t forget to include jQuery library):
1 2 3 4 5 6 7 | $(function(){ $("#vertical div.wrap").hover(function(){ $(this).stop().animate({top:"-130px"},{queue:false,duration:200}); }, function() { $(this).stop().animate({top:"0px"},{queue:false,duration:200}); }); }); |
Here is simple CSS styling:
1 2 3 4 5 6 7 8 9 | html,body,div,h2,img {margin:0;padding:0;border:none;} html { font:1em Arial, Helvetica, sans-serif; color:#444; } h1 {text-align:center;} .clear { clear: both; } #vertical { margin:50px auto; width:920px; } #vertical div.element { margin-right:3px; float:left; width:296px; height:130px; border:1px solid #999; position:relative; overflow:hidden; } .wrap { display: block; height: 260px; width: 296px; position: absolute; top: 0; } .init { display: block; height: 130px; width:296px; background: #F96; } .short { display: block; height: 130px; width:296px; background: #69C; } |
And at the end the actual HTML needed:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <div id="vertical" class="clear"> <h1>jQuery image slide on hover effect (vertical)</h1> <div class="element"> <div class="wrap"> <div class="init">Hover over me</div> <div class="short">On hover content</div> </div> </div> <div class="element"> <div class="wrap"> <div class="init">Hover over me 1</div> <div class="short">On hover content 1</div> </div> </div> <div class="element"> <div class="wrap"> <div class="init">Hover over me 2</div> <div class="short">On hover content 2</div> </div> </div> </div> |
XSLT display random row in SharePoint
Today I was updating a web site for a customer. They needed new web part in SharePoint do display random content. As i eventually figured out this was quite easy to do:
<xsl:variable name=”highlight” select=”ddwrt:Random(1,count($Rows))” />
<xsl:for-each select=”$Rows[position()=$highlight]”>
(I googled the code in: http://blog.allyis.com/blog/bid/29519/Randomly-Displayed-Content-in-SharePoint)
Follow Us!