<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7246980608594539492</id><updated>2025-12-10T08:48:03.187-08:00</updated><category term="CQ5"/><category term="Moss2007"/><category term="SharePoint"/><category term="Site Content Types"/><category term="Facebook"/><category term="Features"/><category term="Microsoft SharePoint Server 2007"/><category term="Microsoft SharePoint Server 2010"/><category term="ResourceResolver"/><category term="SharePoint2007"/><category term="Site Columns"/><category term="404 error page"/><category term="AEM 6.0"/><category term="ASP.NET AJAX"/><category term="Acces denied error in sharepoint 2007"/><category term="App_GlobalResources"/><category term="Approved documents"/><category term="BSOD Error"/><category term="Best practices while creating webparts"/><category term="Bug"/><category term="CAML"/><category term="CMS"/><category term="CMS Best Practices"/><category term="CQ5 Page"/><category term="Content Type Hubs"/><category term="ContextMenu"/><category term="Custom SharePoint 404 Error page"/><category term="Custom error page"/><category term="Custom resource files"/><category term="DAM"/><category term="Deployment"/><category term="Hot Fix"/><category term="IE crashes"/><category term="Integration"/><category term="Integration AJAX Rating Control"/><category term="Jquery"/><category term="Language pack"/><category term="MOSS2010"/><category term="Managed meta data"/><category term="Media"/><category term="Media streaming webpart"/><category term="Node"/><category term="Node Properties"/><category term="PageManager"/><category term="Query"/><category term="Reading DAM assets"/><category term="Reading nodes"/><category term="SP2010"/><category term="SPContent.current.web"/><category term="SPCustomContextMenu"/><category term="SharePoint 2010"/><category term="SharePoint Activity Feeds"/><category term="SharePoint Document library check-out problem"/><category term="SharePointContextMenu"/><category term="Sharepoint File Not Found Page"/><category term="Site catalyst"/><category term="SiteCatalystWebservice"/><category term="SlingHttpServletRequest"/><category term="Solution architecture"/><category term="Spanish(United States)"/><category term="Streaming"/><category term="Values for workflow status"/><category term="WSP Builder"/><category term="WSP Package"/><category term="WebParts"/><category term="YouTube events are not firing"/><category term="analytics"/><category term="content deployment"/><category term="cq-analytics"/><category term="definition"/><category term="es-MX"/><category term="event receiver"/><category term="page layouts"/><category term="report suite"/><category term="site collectin"/><category term="site collection"/><category term="third party services"/><category term="webpart"/><title type='text'>T20mins</title><subtitle type='html'>Crushing Between Technologies</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>41</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-7126420065575658433</id><published>2014-09-28T23:58:00.002-07:00</published><updated>2015-03-27T23:14:09.093-07:00</updated><title type='text'>Building Accordion Component Using AEM 6.0 Slightly Framework</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
Front end components :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
There are two component&#39;s, one is accordion container component and another one is accordion section component, the container component will act as a container for section component&#39;s&lt;br /&gt;
&lt;br /&gt;
Accordion Container Component Snippet&lt;br /&gt;
&lt;br /&gt;
&lt;pre name=&quot;code&quot;&gt;&amp;lt;script&amp;gt;
  $(function() {
    $( &quot;#accordion&quot; ).accordion();
  });
&amp;lt;/script&amp;gt;

&amp;lt;div id=&quot;globalcont&quot;&amp;gt;
&amp;lt;div id=&quot;header&quot;&amp;gt;
&amp;lt;div data-sly-resource=&quot;${ @path=&#39;container&#39;, resourceType=&#39;foundation/components/parsys&#39;}&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;div data-sly-use.acc=&quot;com.rz.AccordionContainer&quot; &amp;gt;
&amp;lt;div id=&quot;accordion&quot;&amp;gt;
&amp;lt;ul data-sly-list.child=&quot;${acc.src}&quot; data-sly-unwrap=&quot;&quot;&amp;gt;&amp;lt;h3&amp;gt;
${child.title}&amp;lt;/h3&amp;gt;
&amp;lt;p&amp;gt;
${child.body}&amp;lt;/p&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
Accordion Section Component Snippet&lt;br /&gt;
&lt;br /&gt;
&lt;pre name=&quot;code&quot;&gt;&amp;lt;div data-sly-test=&quot;${wcmmode.edit}&quot;&amp;gt;Show this only in edit mode to the author&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
Code base for accordion container component&lt;br /&gt;
&lt;br /&gt;
this is the code base for accordion container component what it does is it will iterate all the child nodes of container component and build custom collection called &quot;AccordionCollection&quot;&lt;br /&gt;
&lt;br /&gt;
The AccordionContainer component extends from WCMUse which is comes with AEM 6.0 slightly framework, the main advantage of this you can get all component related properties ex : getResource()&lt;br /&gt;
&lt;br /&gt;
&lt;pre name=&quot;code&quot;&gt;package com.rz;

import io.sightly.java.api.Use;
import com.adobe.cq.sightly.WCMUse;
import javax.script.Bindings;
import com.day.cq.wcm.api.Page;

import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceWrapper;
import org.apache.sling.api.resource.ValueMap;
import org.osgi.framework.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.PropertyIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Value;
public class AccordionContainer extends WCMUse  
{        

 private static final Logger log = LoggerFactory
   .getLogger(AccordionContainer.class);
    List&lt;accordioncollection&gt; src = null; 
    @Override 
    public void activate()
    {      
        
  Node rootNode = getResource().adaptTo(Node.class);
  try {
   log.error(&quot;Executing handler for try&quot;);
   if (rootNode != null) {
    log.error(&quot;Executing handler for node&quot; + rootNode.getPath());
    Node par = rootNode.getParent();
    log.error(&quot;Executing handler for node&quot; + par.getPath());
    NodeIterator child = rootNode.getNodes();
    while (child.hasNext()) {
     src = new ArrayList&lt;accordioncollection&gt;();
     Node childnode = child.nextNode();
     log.error(&quot;Executing handler for section node&quot;
       + childnode.getPath());
     NodeIterator sectionnode = childnode.getNodes();
     long i = sectionnode.getSize();
     log.error(&quot;printing the size &quot; + i);
     
     while (sectionnode.hasNext()) {
      Node node1 = sectionnode.nextNode();
      log.error(&quot;Executing handler for child section node&quot;
        + node1.getPath());
      String title = node1.getProperty(&quot;sectionTitle&quot;)
        .getValue().getString();
      log.error(&quot;display the property&quot; + title);
      String body = node1.getProperty(&quot;sectionBody&quot;)
        .getValue().getString();
      log.error(&quot;display the property&quot; + body);
 
       src.add(new AccordionCollection(title,body));
              
     }

    }


   
   }
  } catch (RepositoryException e) {
   log.error(&quot;any Error&quot;);

   e.printStackTrace();
  }
    }   
    public List&lt;accordioncollection&gt; getSrc() 
    {       
        return src;  
    }
}

&lt;/pre&gt;&lt;br /&gt;
Code base for AccordionCollection component&lt;br /&gt;
&lt;br /&gt;
&lt;pre name=&quot;code&quot; &gt;package com.rz;


public class AccordionCollection {

 private String title;
 private String body;
 
 AccordionCollection(String title, String body){
  this.title = title;
  this.body = body;
 }

   
    public String getBody() {
  return body;
 }
 public void setBody(String body) {
  this.body = body;
 }
 public String getTitle() {
  return title;
 }
 public void setTitle(String title) {
  this.title = title;
 }


 @Override
 public String toString() {
  return &quot;AccordionCollection [title=&quot; + title + &quot;, body=&quot; + body + &quot;]&quot;;
 }
  
}

&lt;/pre&gt;&lt;br /&gt;
Find the output below&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2uH2A8_HIMGS-diACbz1U3E1U1gK-Bj9aG4fFQ-gPWg6eq-h4BGYdf7UiPpXo0dvFUX39BsgqRgUNRKad-sHdTLSFxO_csowBkMQP0IuWLvCEennfoSoxkacgOA8dTiwg2zQmdVjfLLMN/s1600/01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2uH2A8_HIMGS-diACbz1U3E1U1gK-Bj9aG4fFQ-gPWg6eq-h4BGYdf7UiPpXo0dvFUX39BsgqRgUNRKad-sHdTLSFxO_csowBkMQP0IuWLvCEennfoSoxkacgOA8dTiwg2zQmdVjfLLMN/s320/01.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/7126420065575658433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2014/09/building-accordion-component-using-aem.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7126420065575658433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7126420065575658433'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2014/09/building-accordion-component-using-aem.html' title='Building Accordion Component Using AEM 6.0 Slightly Framework'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2uH2A8_HIMGS-diACbz1U3E1U1gK-Bj9aG4fFQ-gPWg6eq-h4BGYdf7UiPpXo0dvFUX39BsgqRgUNRKad-sHdTLSFxO_csowBkMQP0IuWLvCEennfoSoxkacgOA8dTiwg2zQmdVjfLLMN/s72-c/01.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-8644893755961649727</id><published>2014-09-27T00:02:00.001-07:00</published><updated>2014-09-27T00:55:27.048-07:00</updated><title type='text'>Limit tags selection to certian number in AEM 6.0</title><content type='html'>Limit tags selection to certian number in AEM 6.0&lt;br /&gt;
&lt;br /&gt;
I see some people have written javascript to limit tags selection to certian number in tags field, but actually there is a OOTB functionality to achieve this and this post will explain how to use OOTB functionality to limit tags selection to certain number &lt;br /&gt;
&lt;br /&gt;
Step 1:&lt;br /&gt;
&lt;br /&gt;
I am going to follow below structure to create tag field but you can use your own strcuture to limit tags selection to certain number, here the tag field node name is categorys &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3w5hABUd4G5V29UbtjfVN02cQ17kLxZe1eHjohh4dKU27v1iqGgOYlr-hMV0yljJTnQsWO06ZO6ajkZzFUnRjJgymE03eIE6crkO7jrPC7AMna5oaS4GUr7-inOAbS1IM-Rs-uAnGNCWV/s1600/01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3w5hABUd4G5V29UbtjfVN02cQ17kLxZe1eHjohh4dKU27v1iqGgOYlr-hMV0yljJTnQsWO06ZO6ajkZzFUnRjJgymE03eIE6crkO7jrPC7AMna5oaS4GUr7-inOAbS1IM-Rs-uAnGNCWV/s320/01.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Step 2:&lt;br /&gt;
&lt;br /&gt;
the below properties are created for tag field ( categorys )node &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkYyO5xHHIE5F4B3pkkUDeLOLO7zwSEgvj61T1XmmzYpNR2UeMFnjtZ9NHZ3YfcQzDnGN6i-W3QVzbDKAo9AjOAJpoPVS1rTPAcKA8YRGjPmU1yqMIFPtkNKasHxtBij2JcS30Bs6-eUkx/s1600/02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkYyO5xHHIE5F4B3pkkUDeLOLO7zwSEgvj61T1XmmzYpNR2UeMFnjtZ9NHZ3YfcQzDnGN6i-W3QVzbDKAo9AjOAJpoPVS1rTPAcKA8YRGjPmU1yqMIFPtkNKasHxtBij2JcS30Bs6-eUkx/s320/02.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Step 3:&lt;br /&gt;
&lt;br /&gt;
Create node called &quot;namespaces&quot; under your tag field in my case I created under categorys field&lt;br /&gt;
&lt;br /&gt;
The primary type for &quot;namespaces&quot; node is &quot;cq:widgetcollection&quot;&lt;br /&gt;
&lt;br /&gt;
Create a separate node in &quot;namespaces&quot; node and provide whatever name you want, here I given &quot;categorynm&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step 4:&lt;br /&gt;
&lt;br /&gt;
the below properties are created for tag field &quot;categorynm&quot; node  &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZoisrJ-V9TmJynUj5dVeTgqiGnyVlI9DlFGWeq-3y5zvylUc1pxQDT_MQ75mdO7nYIvf-oPb7VQh2B9mgGRa98y_H3oIgzF54fG0_QoUqKVCyCtyqM21eOIKKg7t7VXwkwXQeYrebF_G8/s1600/03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgZoisrJ-V9TmJynUj5dVeTgqiGnyVlI9DlFGWeq-3y5zvylUc1pxQDT_MQ75mdO7nYIvf-oPb7VQh2B9mgGRa98y_H3oIgzF54fG0_QoUqKVCyCtyqM21eOIKKg7t7VXwkwXQeYrebF_G8/s320/03.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
The &quot;maximum&quot; property plays major role here and this property will limit the number of tags selection and displays error message while authoring&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwLKcX9hI_SKpNHSDB3egavfQPQ2-bPesONsWiiW6xIY62f4gs_N7qR88eSn8CMvNUcIazrYE7Ik0Ch6zgCnIx0uiZVc1sWmXjRV54-BXVwYoVRIZGPiMBuwV5vSM7G68yFOseuxT1tbrL/s1600/04.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwLKcX9hI_SKpNHSDB3egavfQPQ2-bPesONsWiiW6xIY62f4gs_N7qR88eSn8CMvNUcIazrYE7Ik0Ch6zgCnIx0uiZVc1sWmXjRV54-BXVwYoVRIZGPiMBuwV5vSM7G68yFOseuxT1tbrL/s320/04.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/8644893755961649727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2014/09/limit-tags-selection-to-certian-number.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/8644893755961649727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/8644893755961649727'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2014/09/limit-tags-selection-to-certian-number.html' title='Limit tags selection to certian number in AEM 6.0'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3w5hABUd4G5V29UbtjfVN02cQ17kLxZe1eHjohh4dKU27v1iqGgOYlr-hMV0yljJTnQsWO06ZO6ajkZzFUnRjJgymE03eIE6crkO7jrPC7AMna5oaS4GUr7-inOAbS1IM-Rs-uAnGNCWV/s72-c/01.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-3723327348012666484</id><published>2014-09-23T07:07:00.001-07:00</published><updated>2014-09-24T23:49:00.248-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><title type='text'>Post message on facebook wall from javascript</title><content type='html'>&lt;br /&gt;
This article will help you to understand how to post a message on facebook wall&lt;br /&gt;
&lt;br /&gt;
Now a days integration of facebook with application is very common requirement which we see from any client and there are multiple ways to integrate but This article will help you to understand how to post a message on facebook wall using javascript&lt;br /&gt;
&lt;br /&gt;
To access facebook API&#39;s first we need to initialize facebook sdk by inserting below snippet directly under &lt;br /&gt;
&lt;body&gt; tag&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Initialize FaceBook SDK :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name=&quot;code&quot;&gt;&amp;lt;script&amp;gt;
window.fbAsyncInit = function() {
FB.init({
appId      : &#39;1374507272793832&#39;,
xfbml      : true,
version    : &#39;v2.1&#39;
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = &quot;//connect.facebook.net/en_US/sdk.js&quot;;
fjs.parentNode.insertBefore(js, fjs);
}(document, &#39;script&#39;, &#39;facebook-jssdk&#39;));
&amp;lt;/script&amp;gt;
&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt; Feed Dialog : &lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You need to call below code on click event of your custom link&lt;br /&gt;
&lt;br /&gt;
&lt;pre name=&quot;code&quot;&gt;FB.ui(
{
method: &#39;feed&#39;,
name: &#39;T20mins technology site.&#39;,
link: &#39;http://www.t20mins.com&#39;,
picture: &#39;http://t20mins.com/external-xfbml/share-image.gif&#39;,
description: &#39;Technology.&#39;,
message: &#39;Technology.&#39;
});

&lt;/pre&gt;&lt;br /&gt;
&lt;b&gt; Code :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;script src=&quot;http://my7steps.com/sites/all/themes/zulka/js/jquery-1.10.2.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;fb-root&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
window.fbAsyncInit = function() {&lt;br /&gt;
FB.init({&lt;br /&gt;
appId      : &#39;1374507272793832&#39;,&lt;br /&gt;
xfbml      : true,&lt;br /&gt;
version    : &#39;v2.1&#39;&lt;br /&gt;
});&lt;br /&gt;
};&lt;br /&gt;
(function(d, s, id){&lt;br /&gt;
var js, fjs = d.getElementsByTagName(s)[0];&lt;br /&gt;
if (d.getElementById(id)) {return;}&lt;br /&gt;
js = d.createElement(s); js.id = id;&lt;br /&gt;
js.src = &quot;//connect.facebook.net/en_US/sdk.js&quot;;&lt;br /&gt;
fjs.parentNode.insertBefore(js, fjs);&lt;br /&gt;
}(document, &#39;script&#39;, &#39;facebook-jssdk&#39;));&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;a id=&#39;share_button&#39; href=&quot;#&quot;&amp;gt;Post Message&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
$(document).ready(function(){&lt;br /&gt;
$(&#39;#share_button&#39;).on(&#39;click&#39;, function(e){&lt;br /&gt;
e.preventDefault();&lt;br /&gt;
FB.ui(&lt;br /&gt;
{&lt;br /&gt;
method: &#39;feed&#39;,&lt;br /&gt;
name: &#39;T20mins technology site.&#39;,&lt;br /&gt;
link: &#39;http://www.t20mins.com&#39;,&lt;br /&gt;
picture: &#39;http://t20mins.com/external-xfbml/share-image.gif&#39;,&lt;br /&gt;
description: &#39;Technology.&#39;,&lt;br /&gt;
message: &#39;Technology.&#39;&lt;br /&gt;
});&lt;br /&gt;
});&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;!DOCTYPE html&gt;&lt;br /&gt;
&lt;head&gt;&lt;br /&gt;
&lt;script src=&quot;http://my7steps.com/sites/all/themes/zulka/js/jquery-1.10.2.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;/head&gt;&lt;br /&gt;
&lt;body&gt;&lt;br /&gt;
&lt;div id=&quot;fb-root&quot;&gt;&lt;/div&gt;&lt;script&gt;
  window.fbAsyncInit = function() {
    FB.init({
      appId      : &#39;1374507272793832&#39;,
      xfbml      : true,
      version    : &#39;v2.1&#39;
    });
  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) {return;}
     js = d.createElement(s); js.id = id;
     js.src = &quot;//connect.facebook.net/en_US/sdk.js&quot;;
     fjs.parentNode.insertBefore(js, fjs);
   }(document, &#39;script&#39;, &#39;facebook-jssdk&#39;));
&lt;/script&gt;&lt;br /&gt;
&lt;h2&gt;&lt;b&gt; Demo : &lt;/b&gt;&lt;/h2&gt;&lt;h4&gt;&lt;a id=&#39;share_button&#39; href=&quot;#&quot;&gt;Click here to post message on facebook wall&lt;/a&gt;&lt;/h4&gt;&lt;script type=&quot;text/javascript&quot;&gt;
 $(document).ready(function(){
 $(&#39;#share_button&#39;).on(&#39;click&#39;, function(e){
 e.preventDefault();
 FB.ui(
 {
 method: &#39;feed&#39;,
 name: &#39;T20mins technology site.&#39;,
 link: &#39;http://www.t20mins.com&#39;,
 picture: &#39;http://t20mins.com/external-xfbml/share-image.gif&#39;,
  description: &#39;Technology.&#39;,
 message: &#39;Technology.&#39;
 });
 });
 });
 &lt;/script&gt;&lt;br /&gt;
&lt;/body&gt;&lt;br /&gt;
&lt;/html&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/3723327348012666484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2014/09/post-message-on-facebook-wall-from.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/3723327348012666484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/3723327348012666484'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2014/09/post-message-on-facebook-wall-from.html' title='Post message on facebook wall from javascript'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-5584807899330868392</id><published>2014-09-23T02:13:00.001-07:00</published><updated>2014-09-25T00:00:19.884-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><title type='text'>An easy way to integrate facebook with your application</title><content type='html'>Now a days integration of facebook with application is very common requirement which we see from any client and there are multiple ways to integrate but in this article I am going to explain you how to integrate facebook like button with your website using javascript&lt;br /&gt;
&lt;br /&gt;
To access facebook API&#39;s first we need to initialize facebook sdk by inserting below snippet directly under &lt;br /&gt;
&amp;lt;body&amp;gt; tag&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Initialize FaceBook SDK&lt;/b&gt;&lt;br /&gt;
&lt;pre name=&quot;code&quot;&gt;&amp;lt;script&amp;gt;
window.fbAsyncInit = function() {
FB.init({
appId      : &#39;1374507272793832&#39;,
xfbml      : true,
version    : &#39;v2.1&#39;
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = &quot;//connect.facebook.net/en_US/sdk.js&quot;;
fjs.parentNode.insertBefore(js, fjs);
}(document, &#39;script&#39;, &#39;facebook-jssdk&#39;));
&amp;lt;/script&amp;gt;

&lt;/pre&gt;&lt;br /&gt;
The important thing which we need to keeep in mind is appId : &#39;1374507272793832&#39;&lt;br /&gt;
&lt;br /&gt;
You can get appId by going to https://developers.facebook.com/  Settings and App ID&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj78nKiOln1NajindegDQLys-XFiRxCtg2s9CM55zWMyVCF_mOqB2l25NkrZ-xHVdjsL79JttzpEpQgWAE4Nj0LlTcwc2Y6rMF_S5GDGxtUrm8lCEI6t5Sr6S-ggfK2Oyvnf0WQ4Qfgld2R/s1600/appid.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj78nKiOln1NajindegDQLys-XFiRxCtg2s9CM55zWMyVCF_mOqB2l25NkrZ-xHVdjsL79JttzpEpQgWAE4Nj0LlTcwc2Y6rMF_S5GDGxtUrm8lCEI6t5Sr6S-ggfK2Oyvnf0WQ4Qfgld2R/s320/appid.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Render Like Button&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
You need to call below code to render like button&lt;br /&gt;
&lt;pre name=&quot;code&quot;&gt;&amp;lt;div  class=&quot;fb-like&quot; data-send=&quot;true&quot; data-width=&quot;450&quot; data-show-faces=&quot;true&quot;&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/5584807899330868392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2014/09/simple-way-to-integrate-facebook.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/5584807899330868392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/5584807899330868392'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2014/09/simple-way-to-integrate-facebook.html' title='An easy way to integrate facebook with your application'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj78nKiOln1NajindegDQLys-XFiRxCtg2s9CM55zWMyVCF_mOqB2l25NkrZ-xHVdjsL79JttzpEpQgWAE4Nj0LlTcwc2Y6rMF_S5GDGxtUrm8lCEI6t5Sr6S-ggfK2Oyvnf0WQ4Qfgld2R/s72-c/appid.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-1962076564314540798</id><published>2014-09-22T06:21:00.001-07:00</published><updated>2014-09-22T09:43:55.071-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="YouTube events are not firing"/><title type='text'>YouTube events are not firing from javascript</title><content type='html'>&lt;br /&gt;
While integrating analytics with YouTube player, we found that the custom events were not firing when we use Iframe based javascript approach&lt;br /&gt;
&lt;br /&gt;
Finally we found that by adding &quot;enablejsapi=1&quot; at the end of youtube url then is started working as expected , refer below code&lt;br /&gt;
&lt;br /&gt;
Ex: http://www.youtube.com/embed/0Bmhjf0rKe8?enablejsapi=1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe id=&quot;player&quot; src=&quot;http://www.youtube.com/embed/0Bmhjf0rKe8&quot; frameborder=&quot;0&quot; allowfullscreen&amp;gt;&lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
// 2. This code loads the IFrame Player API code asynchronously.&lt;br /&gt;
var tag = document.createElement(&#39;script&#39;);&lt;br /&gt;
&lt;br /&gt;
tag.src = &quot;https://www.youtube.com/iframe_api&quot;;&lt;br /&gt;
var firstScriptTag = document.getElementsByTagName(&#39;script&#39;)[0];&lt;br /&gt;
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);&lt;br /&gt;
&lt;br /&gt;
// 3. This function creates an &amp;lt;iframe&amp;gt; (and YouTube player)&lt;br /&gt;
//    after the API code downloads.&lt;br /&gt;
var player;&lt;br /&gt;
function onYouTubeIframeAPIReady() {&lt;br /&gt;
player = new YT.Player(&#39;player&#39;, {&lt;br /&gt;
height: &#39;390&#39;,&lt;br /&gt;
width: &#39;640&#39;,&lt;br /&gt;
playerVars: {&lt;br /&gt;
&#39;autoplay&#39;: 1,&lt;br /&gt;
&#39;controls&#39;: 1&lt;br /&gt;
},&lt;br /&gt;
events: {&lt;br /&gt;
&#39;onReady&#39;: onPlayerReady,&lt;br /&gt;
&#39;onStateChange&#39;: onPlayerStateChange&lt;br /&gt;
}&lt;br /&gt;
});&lt;br /&gt;
}&lt;br /&gt;
var playerReady = false;&lt;br /&gt;
// 4. The API will call this function when the video player is ready.&lt;br /&gt;
function onPlayerReady(event) {&lt;br /&gt;
playerReady = true;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
// 5. The API calls this function when the player&#39;s state changes.&lt;br /&gt;
//    The function indicates that when playing a video (state=1),&lt;br /&gt;
//    the player should play for six seconds and then stop.&lt;br /&gt;
function onPlayerStateChange(event) {&lt;br /&gt;
if (event.data == YT.PlayerState.ENDED) {&lt;br /&gt;
alert(&#39;Fired...&#39;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/1962076564314540798/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2014/09/youtube-events-are-not-firing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/1962076564314540798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/1962076564314540798'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2014/09/youtube-events-are-not-firing.html' title='YouTube events are not firing from javascript'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-425840085732078381</id><published>2014-09-22T02:40:00.000-07:00</published><updated>2014-09-22T02:42:41.068-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="AEM 6.0"/><category scheme="http://www.blogger.com/atom/ns#" term="BSOD Error"/><title type='text'>AEM 6.0 BSOD Error</title><content type='html'>When ever I open AEM 6.0 instance in my local machine the system is going down and getting BSOD error&lt;br /&gt;
&lt;br /&gt;
To overcome this problem, I have installed below things in my local machine&lt;br /&gt;
&lt;br /&gt;
1. Install JDK1.8&lt;br /&gt;
2. Install AEM6.0 Service Pack1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install JDK 1.8 :&lt;br /&gt;
&lt;br /&gt;
you can download and install JDK 1.8 by following below link&lt;br /&gt;
&lt;br /&gt;
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html&lt;br /&gt;
&lt;br /&gt;
Installing Service Pack 1&lt;br /&gt;
&lt;br /&gt;
Recently Adobe has released Service pack for AEM 6.0, you can download it by going through the package share&lt;br /&gt;
&lt;br /&gt;
Install Service Pack :&lt;br /&gt;
&lt;br /&gt;
Unzip your quickstart folder by using below command&lt;br /&gt;
&lt;br /&gt;
java -jar a*.jar -unpack&lt;br /&gt;
&lt;br /&gt;
Now, create a new folder called install in quick-start folder and place Service pack 1 for AEM 6.0 in install folder and then start your AEM 6 instance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/425840085732078381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2014/09/aem-60-bsod-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/425840085732078381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/425840085732078381'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2014/09/aem-60-bsod-error.html' title='AEM 6.0 BSOD Error'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-109818132117973821</id><published>2013-10-07T07:27:00.002-07:00</published><updated>2014-09-22T02:46:38.871-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CMS"/><category scheme="http://www.blogger.com/atom/ns#" term="Integration"/><category scheme="http://www.blogger.com/atom/ns#" term="third party services"/><title type='text'>Integration with other third-party service</title><content type='html'>The below list of questions will help you to get some high level overview of how to integrate&lt;br /&gt;
&lt;span class=&quot;st&quot;&gt;your application with other third party services and also will help you what are all the question&#39;s&lt;/span&gt;&lt;br /&gt;
we may need to ask to third party provider&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; margin-left: .5in; margin-right: 0in; margin-top: 0in;&quot;&gt;
&lt;/div&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt;Do you have any kind of web interface where we can test web methods by passing sample data?&lt;/li&gt;
&lt;li&gt;How many ways we can integrate your product in to our application? ( Web-methods, REST API&#39;s, JavaScript api&#39;s, ODATA etc )&lt;/li&gt;
&lt;li&gt;Does all API&#39;s support all functionality’s?&lt;/li&gt;
&lt;li&gt;Limitations of your product?&lt;/li&gt;
&lt;li&gt;Do you have any web interface, where we can do basic/limited operations like creating test user&#39;s, checking reports etc...&lt;/li&gt;
&lt;li&gt;Who will provide secret token? Can we generate secret key by following client side web interface?&lt;/li&gt;
&lt;li&gt;Any limitation on web service API’s calls count? Will you charge if the request count exceeds?&lt;/li&gt;
&lt;li&gt;Do we need to send username and password along with web service request or username, password and secret token is enough?&lt;/li&gt;
&lt;li&gt;Will you charge any amount? if we raise a request to create new user or modify something etc... ?&lt;/li&gt;
&lt;li&gt;What kind of output does your application returns?&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;ul&gt;
&lt;li&gt;JSON&lt;/li&gt;
&lt;li&gt;XML&lt;/li&gt;
&lt;li&gt;Encrypted IMAGE&lt;/li&gt;
&lt;li&gt;IFrame contains html&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;If the output is html, does it support all browsers?&lt;/li&gt;
&lt;li&gt;What kind of authentication mechanism, do we need to follow while using web-service?&lt;/li&gt;
&lt;li&gt;If authentication mechanism is basic then do we need to make SSL requests?&lt;/li&gt;
&lt;li&gt;Does your application supports SSL?&lt;/li&gt;
&lt;li&gt;Does your web-service supports generating entity classes?&lt;/li&gt;
&lt;li&gt;How can we identify whether the request is succeed or not?&lt;/li&gt;
&lt;li&gt;Is there any time-out applied for web-service calls?&lt;/li&gt;
&lt;li&gt;If we are not able to access your web-service url, what are all the things do we need to check, do you have any trouble-shooting document?&lt;/li&gt;
&lt;li&gt;Do we need to do any kind of encryption while passing parameters to server?&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/109818132117973821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2013/10/integration-with-other-third-party.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/109818132117973821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/109818132117973821'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2013/10/integration-with-other-third-party.html' title='Integration with other third-party service'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-6982285057207849863</id><published>2013-10-02T10:29:00.000-07:00</published><updated>2013-10-08T10:35:21.776-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CMS Best Practices"/><category scheme="http://www.blogger.com/atom/ns#" term="CQ5"/><category scheme="http://www.blogger.com/atom/ns#" term="Jquery"/><title type='text'>CMS Best Practices</title><content type='html'>&lt;b&gt;Don&#39;t include JQuery libs at component level&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I have seen so many people who include JQuery libs at component level, the disadvantage of including at component level is for each and every component the system will make request to server to download JQuery libs and it may lead to page performance&lt;br /&gt;
&lt;br /&gt;
Sometimes we get lot of undefined JavaScript errors because of loading multiple versions of JQuery libs&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
Maintaining central location, I suggest create client libs and include at Basetemplate level, if new version comes just update client libs&lt;br /&gt;
&lt;br /&gt;
In some scenarios the system will force you to include at component level, in such cases use JQuery.noConflict () option to avoid conflicts&lt;br /&gt;
&lt;br /&gt;
Consider that the AEM also provides JQuery libs, some functionality which is depending on particular version of JQuery then download into your clientlibs; otherwise try to utilize OOTB JQuery Libs&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Don’t deploy CSS or JS files in to production&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Is it right approach deploying CSS, JavaScript files as part of deployment package in “Content Management System”?&lt;br /&gt;
&lt;br /&gt;
Why,&amp;nbsp; because I have seen some people who came from traditional web development and no knowledge on CMS trying to deploy css and js files through package and finally mess up entire environment like overriding content of css and js files of content authors&lt;br /&gt;
&lt;br /&gt;
How can we handle this situation, in any CMS you can find two types of content one is static content and another one is dynamic content&lt;br /&gt;
&lt;br /&gt;
Dynamic content:&lt;br /&gt;
&lt;br /&gt;
The content which you think it changes frequently by content author or admin’s need to be handled by content deployment or replication or page activation&lt;br /&gt;
&lt;br /&gt;
Ex: Style sheets, images, text etc…&lt;br /&gt;
&lt;br /&gt;
Normally, the content authors or site admin’s performs this action&lt;br /&gt;
&lt;br /&gt;
Static content:&lt;br /&gt;
&lt;br /&gt;
The content which you think it will not change in future need to be deployed as package such as style sheets, images, JavaScript files etc…&lt;br /&gt;
This is the developer job and the developer includes this content into package and deploys into a respective environment &lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&lt;br /&gt;
Don’t include css and js files in your deployment package, if you feel the content author is going to modify it, keep it in central location which can be accessible by content authors as well as developers &lt;br /&gt;
&lt;br /&gt;
Normally in SharePoint you can do this by placing style sheets in style library and in CQ5 you can do this by putting in etc/designs folder&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Don’t deploy configuration file in to the production environment&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The general meaning of configuration file is to change settings of system at any time, but if you deploy your settings through deployment package that may override existing entries which has made by author and the system may go down&lt;br /&gt;
&lt;br /&gt;
I strongly recommend don’t deploy your configuration settings through package which you feel it changes frequently&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Always create I18n folder at site level not at component level&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Don’t create I18n folder at component level, if you create your I18n folder at component level you may lose certain capabilities,&lt;br /&gt;
&lt;br /&gt;
Suppose in future if you want to create new locale it is very difficult to check entire solution to identify I18n folders, which needs to convert into new locale and which may lead to maintenance issue and moreover there is a chance for duplicate entries &lt;br /&gt;
&lt;br /&gt;
These duplicate entries may override existing ones and you need to spend lot of time to debug the issue &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Always use locale copy while creating new website&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Don’t create web site by simply creating pages in hierarchy manner, it is very difficult to implement MSM&lt;br /&gt;
&lt;br /&gt;
The page nName needs to be in the format of &lt;language-code&gt; or &lt;language-code&gt;_&lt;country-code&gt;, for example en, en_US, en_us, en_GB, en_gb.&lt;br /&gt;•&amp;nbsp;&amp;nbsp; &amp;nbsp;The supported language code is lower-case, two-letter code as defined by ISO-639-1&lt;br /&gt;•&amp;nbsp;&amp;nbsp; &amp;nbsp;The supported country code is lower-case or upper-case, two-letter code as defined by ISO 3166&lt;b&gt;&lt;br /&gt;&amp;nbsp;&lt;/b&gt;&lt;/country-code&gt;&lt;/language-code&gt;&lt;/language-code&gt;&lt;br /&gt;
&lt;b&gt;Don’t iterate nodes, try to use Query Builder, if you are performing any search operation&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use Case:&lt;br /&gt;
&lt;br /&gt;
The user shall be able to receive news based on subscribed opt-in&#39;s &lt;br /&gt;
&lt;br /&gt;
The Taxonomy for news is &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Therapy area news&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Oncology news&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
While registering into site the end user select’s any of news taxonomy keyword either Therapy area or oncology, based on the selection the system will send respective news related email’s to the user&lt;br /&gt;
&lt;br /&gt;
Here, don’t iterate each and every user node to find out opt-in, try to use query build to avoid performance impact&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;The sibling nodes should not exceed more than 2k&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the sibling nodes should not exceed more than 2k , under normal circumstances it is fine like simple creating and reading node’s but, if you are&amp;nbsp; performing any kind of search operation on these nodes this may impact on performance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Don&#39;t enable dispatcher level cache in lower environment only enable in production environment&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Don’t enable dispatcher level cache in lower environment, if you are planning to do load testing, test it on lower environments either pre-prod or the environment which is similar to your production box&lt;br /&gt;
&lt;br /&gt;
Always make sure the cache should be enabling in production box, initially this may impact on performance but while going forward the performance will increase&lt;br /&gt;
&lt;br /&gt;
Before enabling cache in production box think about your application digital asset size, if the volume of size heavy, then it is better to enable cache ASAP&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;All environments should be in sink to avoid surprises&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Always make sure that the environments should be in sink to avoid last minute surprises, I strongly recommend don’t directly work on production environment if you face some problems in production environment, first fix it in pre-prod environment , then test it in prod author and finally fix&amp;nbsp; it on publish environment&lt;br /&gt;
&lt;br /&gt;
I recommend first deploy package in author and publish environment then replicate content from author to publish environment, before replication content check all configurations are fine or not&lt;br /&gt;
&lt;br /&gt;
I have seen some people who directly work’s on publish environment and making entire system down, but this is not right approach&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Don&#39;t do over architecture keep it simple&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
While developing components don’t do over architecture keep it as simple as possible, sometimes the over architecture may impact on performance, for simple components try to reduce layers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Don&#39;t store PII information in cookies&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Personal Identification Information is very important for any client, so don’t store PII information in cookies like user password, social security number etc,..&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Try to leverage to use OOTB functionalities&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once you receive requirements from your client first check whether it is feasible with OOTB functionality or not, if it feasible then tries to use OOTB, if it is not feasible then only start developing custom components&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Identify Data Model before start developing custom components&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Choosing database is not an big difficult just compare relational database features with JavaContentRepository features&lt;br /&gt;
&lt;br /&gt;
Ex :&lt;br /&gt;
&lt;br /&gt;
For some of the requirements demands versioning capability, in such cases the relational database does not support versioning functionality, so we need to think about JCR &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Avoid loading unnecessary dependencies in POM files&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Try to avoid loading un-necessary jar files through POM entries, identify all required common jar files and create separate module and import that in to other modules&lt;br /&gt;
&lt;br /&gt;
This we can achieve only through user education&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Don’t refer untrusted resources&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I have seen some components which is directly referring like below code&lt;br /&gt;
&lt;script src=&quot;http://code.jquery.com/jquery-1.10.1.min.js&quot;&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
The best practice is download the .js file to your solution and refer it&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Use CDN&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To achieve greater performance, if possible try to implement CDN, but this totally depends on client&lt;br /&gt;
&lt;br /&gt;
Don’t hard code CDN server url while making image, video, file etc… it is very difficult to identify each and every link&lt;br /&gt;
&lt;br /&gt;
Create separate Filter which parse each and every url, if it is a digital asset then redirect to CDN server to download that Digital Asset&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Create custom error pages&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For any website the custom error pages are mandatory like 500 server error, 404 not found etc… if we directly display as it is then this will directly effect on overall website credit&lt;br /&gt;
&lt;br /&gt;
So always design custom error message pages and apply it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;XSS&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Cross site scripting enable attacker to inject maliculious code in to your system, so don’t forget to encode user inputs before submitting form&lt;br /&gt;
&lt;br /&gt;
Use XSSFilter in CQ5 to validate User entered information&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Know the difference between Sessions&lt;br /&gt;
&lt;br /&gt;
If you see Any CMS there are two sessions one is Admin session and another one is User Session &lt;br /&gt;
&lt;br /&gt;
For read only operations use User sessions and if you are doing some edit and update operations then go with admin sessions&lt;br /&gt;
&lt;br /&gt;
If the requirement is just reading items or nodes and display it on a page then just go with user session &lt;br /&gt;
&lt;br /&gt;
Try to avoid using admin sessions , if&amp;nbsp; you are obtaining inputs from end user try to store into /content/usergenerated folder in content repository&lt;br /&gt;
&lt;br /&gt;
For just reading nodes and properties use user session slingRequest.getResourceResolver().adaptTo(Session.class)&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/6982285057207849863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2013/10/cms-best-practices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/6982285057207849863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/6982285057207849863'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2013/10/cms-best-practices.html' title='CMS Best Practices'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-5300126810528965569</id><published>2013-09-12T08:09:00.000-07:00</published><updated>2013-09-12T08:09:04.142-07:00</updated><title type='text'>Information Architecture Planning</title><content type='html'>&lt;b&gt;Introduction&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;In the current digital-world the amount of data that the company’s are storing in their repositories’ and also dealing is growing day by day and it is very important for any company to efficiently use this data to make company success or failure, for any company the first priority is customer, if the customer is not able to find what he wants in company website then chances are high to loose them, the web sites which helps customers to find what they need quickly and easily will definitely win the customers&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;How can I describe you as Information Architecture?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;I am an information architect and I am responsible for organizing huge amount of data in my company&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;What client is expecting?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;You have received requirements from client to build a new website; you can develop this website with four pages and 10 components and deliver it, but what exactly the client is expecting out of these functionalities? What are the web site goals?&lt;br /&gt;
&lt;br /&gt;Identifying goals are very simple, assemble all the people who are responsible for making project success, it includes client or peers and ask them to provide order of importance to the content. Collect all suggestions and document everything share it with all stake holders to get approval&lt;br /&gt;
&lt;br /&gt;This article talks about how efficiently we can organize data&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Why do we need to organize data?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;Have you ever think why your company is investing lot of money and time on designing and developing intranet portals? What is the return on investment? Can we not design sites without wasting money and time?&lt;br /&gt;&lt;br /&gt;
The answer for all above questions is yes, we can do only, if you are ready to face below problems&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;The cost of losing customers:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;The site looks very good but day by day, no of hits per day is going down and finally identified that the customer is not able to find what he wants in your portal&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;The cost of re-design:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
How many dollars do us need to spend, if the site is poorly designed and not meeting your goals and need to re-design entire site&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;The cost of time:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
The employee time is very important for any organization, how much time does your employee spends extra 5minutes per day struggling to find out what he wants? If you don’t have proper intranet portal&lt;br /&gt;&lt;br /&gt;
Assume that you are working for a big organization and everyday you get hundreds of mails, if you don’t organize your mails properly finally you end-up with wasting time on searching mails&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;The cost of maintenance:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
How much money you spend to maintain technical people or third party providers (Savvies, Rack space etc…) to update single line in your page, there should be some kind of mechanism that the non-technical people also should be able to update the content&lt;br /&gt;&lt;br /&gt;
In WCM based portals every month we may expect hundreds of pages, how can we handle this situation if we don’t have proper architecture planning? &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;What is information architecture?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;Information architecture talks about organizing your company’s information and website structure by categorizing content logically, priority basis and also ensures that the content is organized in proper structure in each section of web site&lt;br /&gt;&lt;br /&gt;
The best example for information architecture is Library, because the Library are well-structured and they follow subject oriented approaches, when you get into Library you can see all magazines are placed one side and books are placed other side, in books section you can find clear separation between each and every category, all fiction related information placed one side and all romantic related books are other side&lt;br /&gt;
&lt;br /&gt;
When I was in child hood , I used to go to library to borrow some books for my grand-mother , the librarians used to keep display boards to easily identify books&lt;br /&gt;
&lt;br /&gt;
by writing book information like author, book name etc…on the display board by seeing display boards, I could easily find out what I want&lt;br /&gt;
&lt;br /&gt;Here, the librarian plays information architecture role, first he will try to find out relationship between each and every books by following label of books or on author’s information and then put it in proper place&lt;br /&gt;&lt;br /&gt;
Also the librarian tries to find out what kind of information the readers are looking for by interacting with them, based on that he will have a call with library’s organizers and get approvals to purchase new books&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Information architecture planning?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;When it comes to website design the IA plays with content such as images, videos, files, documents, people, process etc…&lt;br /&gt;&lt;br /&gt;
Long time back, I was designed and implemented intranet portal for my company on SharePoint content management system while developing this, I used to interact with lot of people to find out what exactly they were expecting, to find out, we used to have regular meetings with respective department heads and create datasheet for every department and shared with respective POC’s as well as all stakeholders&lt;br /&gt;&lt;br /&gt;
We asked them to prioritize content and give ranking to every user story or paragraph in the datasheet but, sometimes if the client is poor client then we may need to give suggestions based on experience to the client on prioritization of content&lt;br /&gt;
&lt;br /&gt;
Once, we got all the datasheets from respective managers or POC’s , we used to prioritize all and once we got some logical conclusion by analyzing content and identifying audience, we have designed draft version of sitemap and wire-frames to showcase to leads how the website looks like&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Identifying the stake-holders?&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
As an Information Architect you need to identify and clarify all stake holder goals, the stake-holders are the people who define the depth and scope of project, identifying the audiences, determining sensitivity of information, giving approvals on each phase of development and giving functional clarification&lt;br /&gt;
&lt;br /&gt;Roles include: Senior Managers who give approval for every phase&lt;br /&gt;
Content owners, end users, development leads, respective department heads etc…&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;What are goals?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
The world is changing day by day and people come up with new strategy’s to sustain in current market, for that they will ask you to create new site or migrate current site to either in content management system or some other platform&lt;br /&gt;
&lt;br /&gt;As an information architect you need to find out why they are moving to new platform? To&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Increase sales&lt;/li&gt;
&lt;li&gt;Attract more audience&lt;/li&gt;
&lt;li&gt;Reduce phone calls by providing online support&lt;/li&gt;
&lt;li&gt;Increase brand value&lt;/li&gt;
&lt;/ul&gt;
Getting information from stake-holders is not one day job. The customer’s priorities changes day by day, so you need to have regular meetings with them and try to get what exactly they are expecting and also to get approvals on functional clarifications on certain phases&lt;br /&gt;&lt;br /&gt;
&lt;b&gt;Target Audience:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
The audiences are people who visit your website&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;People who sells items in your site&lt;/li&gt;
&lt;li&gt;People who purchase items through your site&lt;/li&gt;
&lt;li&gt;People who maintains content of site&lt;/li&gt;
&lt;li&gt;Venture capitalist who wants to know about your company etc…&lt;/li&gt;
&lt;/ul&gt;
As an IA you need to identify whom the client is targeting who are the primary audience and secondary audience&lt;br /&gt;
&lt;br /&gt;There is an ecommerce portal which sells products through online; their target audience is men’s and they get few females customers also, but the client says that they have strong male audience , so while designing our website we need to keep this in mind and we need to design our site which targets men’s as primary&lt;br /&gt;
&lt;br /&gt;&lt;b&gt;Content analysis&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Don’t wait for complete information, first start analyzing the content which you already have, interact with your stake holders and decide what should be included in a new site, if you are migrating content from existing site, then analyze the existing content management system, sitemap, total pages and find out what needs to be include and excluded, keep the content that will be only useful to end users, don’t put un necessary information which the end-user really does not want&lt;br /&gt;
&lt;br /&gt;Next, try to imagine end-user perceptive, once he/she enters into your web site, what you are show casing to them based on client goals is the matter&lt;br /&gt;
&lt;br /&gt;Normally, digital marketing sites displays top 10 articles or products and special offers etc...On home page&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Organizing content:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;Once the analysis is completed next step is organizing content, we need to identify the relation between content and also relation between one page to other , if you feel there is a similar content, you can make it as separate group and provide meaning full name, later we need to design navigation structure based on these groups&lt;br /&gt;&lt;br /&gt;
Making logical groups are very important thing, because while going forward we will apply metadata and labels on this&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Sitemap:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;Before designing sitemap we should try to understand what are all the functionalities, features and what kind of content are going to have in website&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/5300126810528965569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2013/09/information-architecture-planning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/5300126810528965569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/5300126810528965569'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2013/09/information-architecture-planning.html' title='Information Architecture Planning'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-2170431418532098120</id><published>2012-11-19T08:44:00.000-08:00</published><updated>2013-10-08T19:30:19.966-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CQ5"/><category scheme="http://www.blogger.com/atom/ns#" term="report suite"/><category scheme="http://www.blogger.com/atom/ns#" term="Site catalyst"/><title type='text'>Report Suites Architecture</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
I have seen lot of people started thinking about development,
when we ask them to integrate site catalyst, Google analytic or urchin in their
site, people are immediately jumping into code like how to call JavaScript to record
data into site catalyst and how to retrieve site catalyst data etc… but all
these things are simple, we can get lot of examples when we read respective SDK’s,
but there is another area where we need to put actual attention&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;What is Report Suite
in Site Catalyst?&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Every day the omniture system captures thousand of records
from web application or website which are integrated with ominture, where exactly
all these information stores? These information stores in report suite of site
catalyst and we need to pass reportsuiteid for every request&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Is one report suite sufficient
for entire application? &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Before creating new report suite we need to identify what kind
of information the client wants to track and what kind of reports he/she wants
to generate, without having all these required information in your hand and if
you blindly starts then you will be definitely in big mess&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Because the report suite supports only 100 events, 75
Traffic variables and 75 conversion variables, what if we want track more than
100 events and if we want to create 76 Traffic variable ?&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
See the below image,&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYf3L-oyqkv14MUQY-pDlSDj04jxZlqFvfwMH_G3o5sBaFnkrQbqx-MTarqbxxyGdHCPOulWyQ23-J_xNAPfo3K5ybFRWQ50CDrtrslEhZHW6i9iYfdnkPZ699KNwKIG9rmkhFe6rsR82o/s1600/report.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;144&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYf3L-oyqkv14MUQY-pDlSDj04jxZlqFvfwMH_G3o5sBaFnkrQbqx-MTarqbxxyGdHCPOulWyQ23-J_xNAPfo3K5ybFRWQ50CDrtrslEhZHW6i9iYfdnkPZ699KNwKIG9rmkhFe6rsR82o/s320/report.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
if we create single report suite for entire Amazon site,
then it is very difficult to maintain, if India location head wants to see last
one month reports of “Amazon India site” then to generate this report is difficult,
we need to apply filters, sometimes the data accuracy problem may occur, and sometimes
the events, variables may cross the limit and also we are missing
modularization concept here &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The solution for this is create new report suite for every
location, so that the location head can easily generate reports, &amp;nbsp;sometimes we may need aggregate data across
all locations, we can create global report suite which contain all locations
information&amp;nbsp;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Note : creating report suites is totally depends on how you organize your data , don&#39;t forget to get complete information from your client and also the information architects or CMS experts can help on this&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/2170431418532098120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2012/11/blog-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2170431418532098120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2170431418532098120'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2012/11/blog-post.html' title='Report Suites Architecture'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYf3L-oyqkv14MUQY-pDlSDj04jxZlqFvfwMH_G3o5sBaFnkrQbqx-MTarqbxxyGdHCPOulWyQ23-J_xNAPfo3K5ybFRWQ50CDrtrslEhZHW6i9iYfdnkPZ699KNwKIG9rmkhFe6rsR82o/s72-c/report.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-1332594524824741303</id><published>2012-11-17T01:33:00.001-08:00</published><updated>2012-11-17T01:33:23.091-08:00</updated><title type='text'>Is it right approach deploying CSS, JavaScript files as part of deployment package in “Content Management System”?</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Is it right approach deploying CSS, JavaScript files as part
of deployment package in “Content Management System”?&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Why, &amp;nbsp;because I have
seen some people who came from traditional web development and no knowledge on
CMS trying to deploy css and js files through package and finally mess up
entire environment like overriding content of css and js files of content
authors&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
How can we handle this situation, in any cms you can find
two types of content one is static content and another one is dynamic content&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Dynamic content:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The content which you think it changes frequently need to be
handled by content deployment or replication or page activation&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Ex: Style sheets, images, text etc…&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Normally, the content authors or site admin’s performs this
action&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Static content:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The content which you think it will not change in future
need to be deployed as package such as style sheets, images, JavaScript files
etc…&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
This is the developer job and the developer includes this
content into package and deploys into a respective environment &lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Solution: &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;You can solve this
using several ways one is creating two sets of css files one is for static
content and another one is for dynamic content so that if you deploy new
package in your CMS environment that t will not disturb dynamic content &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Second one is don’t
include css and js files in your deployment package keep it in central location
which can be accessible by content authors as well as developers &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Normally in SharePoint
you can do this by placing style sheets in style libray and in CQ5 you can do
this by putting in etc/designs folder&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/1332594524824741303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2012/11/is-it-right-approach-deploying-css.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/1332594524824741303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/1332594524824741303'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2012/11/is-it-right-approach-deploying-css.html' title='Is it right approach deploying CSS, JavaScript files as part of deployment package in “Content Management System”?'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-7154189435687892347</id><published>2012-11-05T10:33:00.000-08:00</published><updated>2012-11-05T19:10:15.903-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="analytics"/><category scheme="http://www.blogger.com/atom/ns#" term="cq-analytics"/><category scheme="http://www.blogger.com/atom/ns#" term="CQ5"/><category scheme="http://www.blogger.com/atom/ns#" term="SiteCatalystWebservice"/><title type='text'>Reading data from site catalyst through  CQ5 </title><content type='html'>In this article I am going to explain how to read data from site catalyst and display it on CQ5 components&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;REST api’s :&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The omniture exposes REST api to read/write data from site catalyst data source, REST is a lightweight protocol and alternative to Web Services (SOAP, WSDL, etc.), in this I am not going to explain REST based concepts &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;CQ5:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
To connect to site catalyst data source the cq5 has provided cq-analytics.jar file, this jar file is just wrapper of omniture REST api it provide different methods to read data from omniture,  using this we can successfully read data from site catalyst from CQ5 environment&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;POM of cq-analytics
jar :&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-autospace: none; text-indent: .5in;&quot;&gt;
&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;dependency&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;groupId&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;com.day.cq&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;groupId&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-autospace: none; text-indent: .5in;&quot;&gt;
&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;artifactId&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;u&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;cq&lt;/span&gt;&lt;/u&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;-analytics&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;artifactId&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;5.4.4&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;scope&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;provided&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;scope&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #3f7f7f; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;dependency&lt;/span&gt;&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;color: teal; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Code :&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The cq5 is provided “SitecatalystWebservice”
to connect to site catalyst and there is one more class “Account” we use this
entity class to pass account information to site catalyst web service&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;Account acc = &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt; Account (&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;true&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;companyName&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;userName&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;secret&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #2a00ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;server&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;);&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&amp;nbsp;
&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;SitecatalystWebservice active =
sling.getService(SitecatalystWebservice.&lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #7f0055; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;class&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;margin-bottom: 0.0001pt;&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt;&quot;&gt;String str =
active.getReportSuites(acc);&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;String reports =
active.getSuccessEvents(acc,”&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;reportSuiteId”&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;The above code returns
all success events which are created for “&lt;/span&gt;&lt;span style=&quot;color: #2a00ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%;&quot;&gt;reportSuiteId&lt;/span&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;; font-size: 10pt; line-height: 115%;&quot;&gt;&lt;b&gt;CompanyName :&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The name is company name which we
use to connect to CQ5 omniture site catalyst&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Username : &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
Omniture site catalyst username&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Secret:&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
The secret key is unique for
every user we can find this by navigating &amp;nbsp;&amp;nbsp;“Omniture Site Catalyst”&amp;nbsp; -&amp;gt; Admin
-&amp;gt; Admin Console -&amp;gt; Company&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;Server :&lt;/b&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
This is datacenter url we can
find this in omniture admin console&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/7154189435687892347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2012/11/connecting-to-site-catalyst-through-cq5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7154189435687892347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7154189435687892347'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2012/11/connecting-to-site-catalyst-through-cq5.html' title='Reading data from site catalyst through  CQ5 '/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-2097344256525641885</id><published>2012-08-13T23:07:00.000-07:00</published><updated>2013-04-17T11:09:10.306-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Bug"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft SharePoint Server 2010"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint Activity Feeds"/><title type='text'>Bug in SharePoint 2010</title><content type='html'>I have created &quot;Survey&quot; activity feed using sharepoint object model but when I try to remove the same I am getting Not Implemented exception&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Error Message :&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&quot;The method or operation is not implemented.&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Code :&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
removeType = app.ActivityTypes[&quot;Survey&quot;];&lt;br /&gt;
m_ActivityManager.ActivityApplications[app.ApplicationId].Remove(); &lt;br /&gt;
//getting The method or operation is not implemented.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (removeType != null)&lt;br /&gt;
{&lt;br /&gt;
app.ActivityTypes.Remove(removeType); //getting The method or operation is not implemented.&lt;br /&gt;
&lt;br /&gt;
removeType.ActivityTypeNameLocStringResourceFile = Survey_RFile;&lt;br /&gt;
removeType.ActivityTypeNameLocStringName = &quot;Srvey _Feed_Display&quot;;&lt;br /&gt;
removeType.IsPublished = true;&lt;br /&gt;
removeType.IsConsolidated = true;&lt;br /&gt;
removeType.Commit();&lt;br /&gt;
removeType.Refresh(true);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Problem :&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Problem is the Remove() method is not implemented&lt;br /&gt;
&lt;br /&gt;
app.ActivityTypes.Remove(removeType); &lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Resoultion :&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Then how can we Remove this?&lt;br /&gt;
&lt;br /&gt;
We can remove the same through sql query but that is not supported by microsoft, if you still want to go ahead and remove you can use below query&#39;s&lt;br /&gt;
&lt;br /&gt;
delete [ActivityTemplate] where activitytemplateid &amp;gt; 18&lt;br /&gt;
delete [ActivityType] where ApplicationID &amp;gt; 5&lt;br /&gt;
delete [ActivityApplication] where ApplicationID &amp;gt; 19&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;WTF...Do we need to wait until the microsoft releases service pack for this?&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/2097344256525641885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2011/06/bug-in-sharepoint-activity-feeds.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2097344256525641885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2097344256525641885'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2011/06/bug-in-sharepoint-activity-feeds.html' title='Bug in SharePoint 2010'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-276327191876536073</id><published>2012-06-12T10:02:00.000-07:00</published><updated>2012-06-12T10:06:58.123-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CQ5"/><category scheme="http://www.blogger.com/atom/ns#" term="CQ5 Page"/><category scheme="http://www.blogger.com/atom/ns#" term="Node"/><category scheme="http://www.blogger.com/atom/ns#" term="Node Properties"/><category scheme="http://www.blogger.com/atom/ns#" term="PageManager"/><category scheme="http://www.blogger.com/atom/ns#" term="ResourceResolver"/><title type='text'>CQ5 : Creating new page and adding content</title><content type='html'>In this article, I am going to explain how to create new page and content using SlingHttpRequest Object&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@page import=&quot;com.day.cq.dam.api.Rendition&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@page import=&quot;com.day.cq.dam.api.Asset&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@page import=&quot;org.apache.sling.api.SlingHttpServletRequest&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@include file=&quot;/libs/foundation/global.jsp&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@page import=&quot;org.apache.sling.api.resource.ResourceResolver&quot;%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@page import=&quot;com.day.cq.wcm.api.Template&quot;%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%&lt;br /&gt;
ResourceResolver resolverPage = slingRequest.getResourceResolver();&lt;br /&gt;
Resource resPage =  resolverPage.getResource(&quot;/content/geometrixx&quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We are going to read page class, so we need to adapt our Resource to Page.class &lt;br /&gt;
&lt;br /&gt;
   Page geoPages  = resPage.adaptTo(Page.class); &lt;br /&gt;
   if(geoPages!=null) {&lt;br /&gt;
      Resource res2 =  resolverPage.getResource(geoPages.getPath());&lt;br /&gt;
  &lt;br /&gt;
   //The PageManager class helps us to create new pages&lt;br /&gt;
&lt;br /&gt;
     PageManager pm = geoPages.getPageManager();&lt;br /&gt;
&lt;br /&gt;
     if(pm!=null) {&lt;br /&gt;
     pm.create(&quot;/content/&quot;,&quot;MspBoxhomeName&quot;,&quot;/apps/mspbox/templates/contentpage&quot;,&quot;MspBoxTitle&quot;);&lt;br /&gt;
           Page newPage  = pm.getPage(&quot;/content/MspHome/&quot;);&lt;br /&gt;
           if(newPage != null)&lt;br /&gt;
           {&lt;br /&gt;
              Node newNode = newPage.adaptTo(Node.class);&lt;br /&gt;
              Node cont = newNode.getNode(&quot;jcr:content&quot;);&lt;br /&gt;
              if(newNode != null)&lt;br /&gt;
                  {&lt;br /&gt;
              cont.addNode(&quot;par&quot;).setProperty(&quot;sling:resourceType&quot;,&quot;foundation/components/parsys&quot;);&lt;br /&gt;
              Node parNode = cont.getNode(&quot;par&quot;);&lt;br /&gt;
              parNode.addNode(&quot;image&quot;);&lt;br /&gt;
              Node imageNode = parNode.getNode(&quot;image&quot;);     &lt;br /&gt;
              imageNode.setProperty(&quot;sling:resourceType&quot;,&quot;foundation/components/image&quot;);&lt;br /&gt;
              imageNode.setProperty(&quot;fileReference&quot;,&quot;/content/dam/geometrixx/shapes/tri_equilateral.png&quot;);&lt;br /&gt;
              parNode.addNode(&quot;text&quot;);&lt;br /&gt;
              Node textNode = parNode.getNode(&quot;text&quot;);     &lt;br /&gt;
           textNode.setProperty(&quot;sling:resourceType&quot;,&quot;foundation/components/text&quot;);&lt;br /&gt;
           textNode.setProperty(&quot;text&quot;,&quot;&amp;lt;p&amp;gt;With at least two equal sides, isoceles is sometimes equilateral and visa versa. Or as the ancient Greeks would say, iso skelos!&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&quot;);&lt;br /&gt;
           cont.save();&lt;br /&gt;
&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/276327191876536073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2012/06/cq5-creating-new-page-and-adding.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/276327191876536073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/276327191876536073'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2012/06/cq5-creating-new-page-and-adding.html' title='CQ5 : Creating new page and adding content'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-7380518956125513345</id><published>2012-06-11T10:06:00.001-07:00</published><updated>2012-06-11T10:20:17.188-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CQ5"/><category scheme="http://www.blogger.com/atom/ns#" term="DAM"/><category scheme="http://www.blogger.com/atom/ns#" term="Reading DAM assets"/><category scheme="http://www.blogger.com/atom/ns#" term="ResourceResolver"/><title type='text'>CQ5 : Reading DAM assets</title><content type='html'>&amp;lt;%@page import=&quot;com.day.cq.dam.api.Rendition&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@page import=&quot;com.day.cq.dam.api.Asset&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@page import=&quot;org.apache.sling.api.SlingHttpServletRequest&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@include file=&quot;/libs/foundation/global.jsp&quot;%&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;%@page import=&quot;org.apache.sling.api.resource.ResourceResolver&quot;%&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;%&lt;br /&gt;
    &lt;br /&gt;
   ResourceResolver resolver = slingRequest.getResourceResolver();&lt;br /&gt;
   Resource res =  resolver.getResource(&quot;/content/dam/geometrixx/movies&quot;);&lt;br /&gt;
   &lt;br /&gt;
   Node rootNode = res.adaptTo(Node.class);&lt;br /&gt;
   if(rootNode!=null) {&lt;br /&gt;
   &lt;br /&gt;
       NodeIterator children = rootNode.getNodes();&lt;br /&gt;
       while (children.hasNext()) {&lt;br /&gt;
           Node node = children.nextNode();&lt;br /&gt;
           if(node != null) {&lt;br /&gt;
               Resource res1 =  resolver.getResource(node.getPath());&lt;br /&gt;
               Asset as = res1.adaptTo(Asset.class);&lt;br /&gt;
               String src = &quot;&quot;;&lt;br /&gt;
               String name = &quot;&quot;;&lt;br /&gt;
               String rel = &quot;&quot;;&lt;br /&gt;
               if(as != null) {&lt;br /&gt;
                               &lt;br /&gt;
                   Rendition ren = as.getRendition(&quot;cq5dam.thumbnail.140.100.png&quot;);&lt;br /&gt;
                   src = ren.getPath();&lt;br /&gt;
                   name = as.getName();&lt;br /&gt;
                   rel = as.getPath();&lt;br /&gt;
               }&lt;br /&gt;
               out.print(&quot;&amp;lt;ul&amp;gt;&quot;);&lt;br /&gt;
               out.print(&quot;&amp;lt;li rel=&quot; + rel  +  &quot;title=&quot; + name + &quot;&amp;gt;&quot;);&lt;br /&gt;
               out.print(&quot;&amp;lt;img src=&quot; + src + &quot;&amp;gt;&amp;lt;/img&amp;gt;&quot;);&lt;br /&gt;
               out.print(&quot;&amp;lt;/li&amp;gt;&quot;);&lt;br /&gt;
               out.print(&quot;&amp;lt;/ul&amp;gt;&quot;);&lt;br /&gt;
           }&lt;br /&gt;
       }&lt;br /&gt;
   };&lt;br /&gt;
   &lt;br /&gt;
   %&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/7380518956125513345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2012/06/cq5-reading-dam-assets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7380518956125513345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7380518956125513345'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2012/06/cq5-reading-dam-assets.html' title='CQ5 : Reading DAM assets'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-5979250182555791753</id><published>2012-06-11T10:04:00.000-07:00</published><updated>2012-06-11T21:53:27.549-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CQ5"/><category scheme="http://www.blogger.com/atom/ns#" term="Reading nodes"/><category scheme="http://www.blogger.com/atom/ns#" term="SlingHttpServletRequest"/><title type='text'>CQ5 Reading Node Properties</title><content type='html'>In CQ5 everything stores in the form of content ( Nodes and Properties ), but while reading content from repository the apache sling framework assumes this is a Resource.Because the sling follows REST based architecture&lt;br /&gt;
&lt;br /&gt;
In this article I am going to explore how to read properties of a Node&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;%@page import=&quot;org.apache.sling.api.SlingHttpServletRequest&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@include file=&quot;/libs/foundation/global.jsp&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@page import=&quot;org.apache.sling.api.resource.ResourceResolver&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%&lt;br /&gt;
&lt;br /&gt;
By using CRXDE I am going to create component called &quot;PropertyReader&quot; and going to read properties of this component &lt;br /&gt;
&lt;br /&gt;
In CQ5 everything stores in the form of content that means &quot;PropertyReader&quot; component also exists in content repository &lt;br /&gt;
&lt;br /&gt;
the below code will send a request to server and tries to return Resource object if it does not find any resource then it returns Null &lt;br /&gt;
&lt;br /&gt;
We need to use SlingHttpServletRequest object to communicate with CQ5 CRX, here the slingRequest is avariable which is already defined in global.jsp file&lt;br /&gt;
&lt;br /&gt;
ResourceResolver resolver = slingRequest.getResourceResolver();&lt;br /&gt;
Resource res =  resolver.getResource(&quot;/apps/mspbox/components/PropertyReader&quot;);&lt;br /&gt;
&lt;br /&gt;
If needed you can adapt a Sling Resource to a JCR Node like below code Node.class, if you are going to read DAM Assets then you need to use Asset.class&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Code :&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&amp;lt;%@page import=&quot;org.apache.sling.api.SlingHttpServletRequest&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@include file=&quot;/libs/foundation/global.jsp&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%@page import=&quot;org.apache.sling.api.resource.ResourceResolver&quot;%&amp;gt;&lt;br /&gt;
&amp;lt;%&lt;br /&gt;
&lt;br /&gt;
ResourceResolver resolver = slingRequest.getResourceResolver();&lt;br /&gt;
Resource res =  resolver.getResource(&quot;/apps/mspbox/components/PropertyReader&quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Accessing a Property :  &lt;br /&gt;
&lt;br /&gt;
Node rootNode = res.adaptTo(Node.class);&lt;br /&gt;
ValueMap prop = res.adaptTo(ValueMap.class);&lt;br /&gt;
String group = prop.get(&quot;componentGroup&quot;, (String) null);&lt;br /&gt;
out.print(group);&lt;br /&gt;
&lt;br /&gt;
Reading all properties :&lt;br /&gt;
&lt;br /&gt;
if(rootNode!=null) {&lt;br /&gt;
NodeIterator children = rootNode.getNodes();&lt;br /&gt;
while (children.hasNext()) {&lt;br /&gt;
Node node = children.nextNode();&lt;br /&gt;
if(node != null) {&lt;br /&gt;
PropertyIterator pi= node.getProperties();&lt;br /&gt;
out.print(&quot;&amp;lt;table&amp;gt;&quot;);&lt;br /&gt;
while (pi.hasNext()) {&lt;br /&gt;
Property p = pi.nextProperty();&lt;br /&gt;
out.print(&quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&quot;);&lt;br /&gt;
out.print(p.getName());&lt;br /&gt;
out.print(p.getPath());&lt;br /&gt;
out.print(&quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&quot;);&lt;br /&gt;
}&lt;br /&gt;
out.print(&quot;&amp;lt;/table&amp;gt;&quot;);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
%&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OUTPUT :&lt;br /&gt;
&lt;br /&gt;
General&lt;br /&gt;
cq:layout&lt;br /&gt;
jcr:createdBy&lt;br /&gt;
jcr:created&lt;br /&gt;
cq:dialogMode&lt;br /&gt;
jcr:primaryType</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/5979250182555791753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2012/06/cq5-reading-node-properties.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/5979250182555791753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/5979250182555791753'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2012/06/cq5-reading-node-properties.html' title='CQ5 Reading Node Properties'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-7608823983900487929</id><published>2011-03-25T20:19:00.000-07:00</published><updated>2011-03-25T20:33:21.060-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="404 error page"/><category scheme="http://www.blogger.com/atom/ns#" term="Custom SharePoint 404 Error page"/><category scheme="http://www.blogger.com/atom/ns#" term="Sharepoint File Not Found Page"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint2007"/><title type='text'>Custom 404 Page not found error page -  SharePoint</title><content type='html'>SharePoint is a content management system, so people creates thousands of pages and at the same time deletes hundreds or thousands of pages, if you hit one of page in deleted pages then you will get page not found error (blue and white screen page), but the problem is the error page is not user friendly, you will not find any redirection link, so how will you solve this problem?&lt;br /&gt;&lt;br /&gt;Usually, we apply 404 page at IIS virtual directory level, but how will you apply same for SharePoint website?&lt;br /&gt;&lt;br /&gt;In SharePoint when we create web application using SharePoint central administration internally that will create a virtual directory under IIS, so now our job is so easy, just check below code, the SPWebApplication refers to Virtual Directory &lt;br /&gt;&lt;br /&gt;Create a feature receiver and add below code in to FeatureActivated method&lt;br /&gt;&lt;br /&gt;See, the web application class contains a property called “FileNotFoundPage” just apply your custom 404 page to that property&lt;br /&gt;&lt;br /&gt;SPSite curSiteColl = properties.Feature.Parent as SPSite;&lt;br /&gt;                  System.Uri webApplicationUri = new Uri(curSiteColl.Url);&lt;br /&gt;                  SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);&lt;br /&gt;                  webApplication.FileNotFoundPage = &quot;404ErrorPage.html&quot;;&lt;br /&gt;                  webApplication.Update();&lt;br /&gt;&lt;br /&gt;The property accepts only HTML page, so we need to assign HTML page and then using Java script redirect to our custom .aspx page&lt;br /&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;br /&gt;      &amp;lt;meta HTTP-EQUIV=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&amp;gt;&lt;br /&gt;      &amp;lt;meta HTTP-EQUIV=&quot;Expires&quot; content=&quot;0&quot; /&amp;gt;&lt;br /&gt;      &amp;lt;script language=&quot;javascript&quot; src=&quot;/_layouts/1033/init.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;      &amp;lt;script language=&quot;javascript&quot; src=&quot;/_layouts/1033/core.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;      &amp;lt;script language=&quot;javascript&quot;&amp;gt;          &lt;br /&gt;            var requestedUrl = escapeProperly(window.location.href);&lt;br /&gt;            STSNavigate(&quot;/_layouts/ErrorPages/404ErrorPage.aspx?oldUrl=&quot; + requestedUrl);&lt;br /&gt;      &amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;Now, open the 404ErrorPage.aspx page and add whatever message you want under place holder main section&lt;br /&gt;&lt;br /&gt;&amp;lt;asp:Content ID=&quot;mainContent&quot; ContentPlaceHolderID=&quot;PlaceHolderMain&quot; runat=&quot;server&quot;&amp;gt;&lt;br /&gt;    &amp;lt;table&amp;gt;&lt;br /&gt;      &amp;lt;tr&amp;gt;        &lt;br /&gt;            &amp;lt;td class=&quot;ErrorPageTitle&quot; &amp;gt;&lt;br /&gt;                  &amp;lt;span class=&quot;ErrorPageTitle1&quot;&amp;gt;Page Not Found&amp;lt;/span&amp;gt; &lt;br /&gt;            &amp;lt;/td&amp;gt;&lt;br /&gt; &lt;br /&gt;      &amp;lt;/tr&amp;gt;&lt;br /&gt;      &amp;lt;tr&amp;gt;&lt;br /&gt;            &amp;lt;td&amp;gt; &amp;lt;span class=&quot;ErrorPageMsg1&quot;&amp;gt;The page you requested could not be found. Use this link&amp;lt;http://mspbox.blogspot.com&amp;gt; to redirect to home page           &amp;lt;/td&amp;gt;       &lt;br /&gt;      &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/asp:Content&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/7608823983900487929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2011/03/404-page-not-found-error-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7608823983900487929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7608823983900487929'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2011/03/404-page-not-found-error-page.html' title='Custom 404 Page not found error page -  SharePoint'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-4340217442839462596</id><published>2011-02-24T03:52:00.000-08:00</published><updated>2013-04-17T11:11:10.500-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Custom error page"/><category scheme="http://www.blogger.com/atom/ns#" term="event receiver"/><category scheme="http://www.blogger.com/atom/ns#" term="MOSS2010"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint 2010"/><title type='text'>Custom error message in SharePoint 2010 + Feature Receiver</title><content type='html'>In SharePoint 2007 there was no way to redirect to custom error page when you use event receivers, if you try also it redirects to default out of the box blue-white error page&lt;br /&gt;
&lt;br /&gt;
But in SharePoint 2010 there are some properties by using this you can redirect to custom error page&lt;br /&gt;
&lt;br /&gt;
public override void ItemAdding(SPItemEventProperties properties)&lt;br /&gt;
&lt;br /&gt;
{&lt;br /&gt;
base.ItemAdding(properties);&lt;br /&gt;
string tite = properties.AfterProperties[“title”].ToString();&lt;br /&gt;
if(tite.Contains(“RSM”))&lt;br /&gt;
{&lt;br /&gt;
properties.Cancel = true;&lt;br /&gt;
properties.Status = SPEventRecieverStatus.CancelWithRedirectUrl;&lt;br /&gt;
Properties.RedirectUrl = “/_layouts/CustomError.aspx?errormessage=bang...don&#39;t use RSM...I hate RSM”;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Limitations.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
This works only for synchorounous events like Itemadding, deleting etc...&lt;br /&gt;
Works only for browser based clients not with outlook.</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/4340217442839462596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2011/02/custom-error-message-in-sharepoint-2010.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/4340217442839462596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/4340217442839462596'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2011/02/custom-error-message-in-sharepoint-2010.html' title='Custom error message in SharePoint 2010 + Feature Receiver'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-2876116969871211193</id><published>2011-02-15T19:37:00.000-08:00</published><updated>2011-02-15T19:41:11.411-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="es-MX"/><category scheme="http://www.blogger.com/atom/ns#" term="Language pack"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft SharePoint Server 2007"/><category scheme="http://www.blogger.com/atom/ns#" term="Spanish(United States)"/><title type='text'>Language pack probem Spanish(United States)</title><content type='html'>Today, we started developing new locale for our existing site that is Hispanic locale for United States, but the main problem which we found is Microsoft does not provide language pack for Hispanic (United States) the solution for this we have chosen (Spanish) Mexico language pack (es-MX)under regional settings of site collection settings of site because the Spanish (Mexico) and Spanish (United States) are almost same&lt;br /&gt;&lt;br /&gt;But, before start developing new locale with above approach the resource files should be in the form of &lt;filename&gt;.es-MX.resx not &lt;filename&gt;.es-US.resx because you have chosen (Spanish)Mexico language pack (es-MX) under regional settings of site collection</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/2876116969871211193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2011/02/language-pack-probem-spanishunited.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2876116969871211193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2876116969871211193'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2011/02/language-pack-probem-spanishunited.html' title='Language pack probem Spanish(United States)'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-2083067596170289397</id><published>2011-02-01T23:39:00.000-08:00</published><updated>2011-02-01T23:49:34.634-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Content Type Hubs"/><category scheme="http://www.blogger.com/atom/ns#" term="Managed meta data"/><category scheme="http://www.blogger.com/atom/ns#" term="site collectin"/><category scheme="http://www.blogger.com/atom/ns#" term="Site Content Types"/><category scheme="http://www.blogger.com/atom/ns#" term="SP2010"/><title type='text'>Planning Content Type Hubs in SP2010</title><content type='html'>when you are developing enterprise application for large organization some fields are common across all brands such as brand name, brand logo, SEO title, SEO description etc..&lt;br /&gt;&lt;br /&gt;How will you handle this common fields across farms?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Scenario (P&amp;G only for reference)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Assume that we are designing architecture for P&amp;G products, normally P&amp;G has lot of products (Pantene, Olay, pampers etc...)but, all these products have some common fields such as Product logo, product name, SEO title, SEO description etc... How will you handle this?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SharePoint 2007&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In SharePoint 2007 usually what we do? we go and create separate content type for this called brand content type and deploy this into  site collection but, here the problem is we need to go to each and every web application and install site content type feature , there is no central location to place common fields, in future if you want to update particular column, you have to go to each and every web application and update &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SharePoint 2010&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In  SharePoint 2010 there is a new concept called &lt;strong&gt;Content Type Hubs&lt;/strong&gt;, through this you can manage all common fields centrally and publish it to the other web applications, so in 2010 the other web applications can subscribe these content types and pull down the published content types  from the CTH and also can get updates when ever changes happened in published content types&lt;br /&gt;&lt;br /&gt;Here, mainly you need to concentrate on three things&lt;br /&gt;&lt;br /&gt;Site collection to host the content types and act as a Content Type Hubs&lt;br /&gt;&lt;br /&gt;Managed metadata service application( to expose content type hub to each and every web application)&lt;br /&gt;&lt;br /&gt;Web applications ( to subscribe content type hubs)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Advantages&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;No need of going to each and every web application and installing the content types and if you want to do  updates on particular content type you can simply do it on Content Type Hubs and push it down, so managing the content types easy&lt;br /&gt;&lt;br /&gt;In reality the content types changes frequently like adding new fields or creating new content type etc... It&#39;s easier to coordinate this from a single location and make sure that xml files are correctly set up across all web applications/farms.</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/2083067596170289397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2011/02/when-you-are-developing-enterprise.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2083067596170289397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2083067596170289397'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2011/02/when-you-are-developing-enterprise.html' title='Planning Content Type Hubs in SP2010'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-6246491239977743398</id><published>2011-01-18T21:46:00.000-08:00</published><updated>2011-01-23T22:28:02.302-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="content deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="Deployment"/><category scheme="http://www.blogger.com/atom/ns#" term="site collection"/><category scheme="http://www.blogger.com/atom/ns#" term="WSP Package"/><title type='text'>Moving data from one site collection to other and make it up</title><content type='html'>In SharePoint, we need to concentrate on lot of things while moving site from one environment to another environment and make it up&lt;br /&gt;&lt;br /&gt;Based on my experience, I am sharing some of the details with you guys&lt;br /&gt;&lt;br /&gt;If you are using VSIDE to develop your site for example creating custom web parts, master pages, css files, features etc...and then developed using VSIDE Then WSP package is best solution but this will solve only half portion of your requirement that means you are deploying static content  means the data which will not change frequently&lt;br /&gt;&lt;br /&gt;But, you need to think about how the dynamic data will be deployed from one environment to another environment dynamic content means the content which is authored by client like new article page, new documents uploaded into document library etc... &lt;br /&gt;&lt;br /&gt;here you need to use either content deployment  or Export /Import but in my SharePoint journey I have used both, choosing the right option is depends on how our environment is setup?&lt;br /&gt;&lt;br /&gt;If your environment is farm environment and having multiple nodes with reliability and security then we can use content deployment option because content deployment will transfer the data on wire so, make sure that there should not be any connection failure while doing content deployment&lt;br /&gt;&lt;br /&gt;Before  doing content deployment you need to consider lot of things&lt;br /&gt;&lt;br /&gt;1. The source farm and destination farm should be identical, assume that you have installed latest service pack or language packs on source farm and the same is not available on destination farm then this will give problem and the content deployment will fail.&lt;br /&gt;&lt;br /&gt;2. The destination site collection should be blank site collection if not then the job will fail because when The first time  the content deployment job runs, the correct template and all associated configuration settings will be applied to the destination server if site collection already contains data then the job will fail.&lt;br /&gt;&lt;br /&gt;3. The disk space in source and destination farm should be enough otherwise disk allocation problem will occur because when job starts it will create a cab file in source temporary folder and export into destination farm temporary folder.&lt;br /&gt;&lt;br /&gt;4. if you have any custom features to install in destination server just install before running your job but don&#39;t activate the features because if you activate that will create  data in content database  so, this may lead to content deployment fail.&lt;br /&gt;&lt;br /&gt;5. Don&#39;t run the content job&#39;s parallel this may lead to content job fail.&lt;br /&gt;&lt;br /&gt;Normally SharePoint enterprise application will have two farm topology  authoring and production farm. Authoring farm works on AD and production is internet facing site and works on FBA, the content authors will upload the data into authoring site and the same will be available in production site through content deployment. There is no specific requirement to have only two farm topology, based on requirements  you can build multi-farm,I worked for one client who is having five farm topology &lt;br /&gt;&lt;br /&gt; I suggest to use content deployment because you can do differential content deployment that means whatever changes made recently will be only moved to one environment to another environment so, this will not override existing content</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/6246491239977743398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2011/01/moving-data-from-one-site-collection-to.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/6246491239977743398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/6246491239977743398'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2011/01/moving-data-from-one-site-collection-to.html' title='Moving data from one site collection to other and make it up'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-469213171632720126</id><published>2010-06-16T16:20:00.000-07:00</published><updated>2011-01-19T00:28:16.121-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CAML"/><category scheme="http://www.blogger.com/atom/ns#" term="definition"/><category scheme="http://www.blogger.com/atom/ns#" term="Query"/><category scheme="http://www.blogger.com/atom/ns#" term="SharePoint"/><category scheme="http://www.blogger.com/atom/ns#" term="Site Columns"/><category scheme="http://www.blogger.com/atom/ns#" term="Site Content Types"/><title type='text'>Creating site columns thorugh SQL query</title><content type='html'>Sometimes, you may feel pain while creating site columns and content types through CAML, because you need to know CAML syntax for each and every site column data type, but you can avoid this by simply running one sql query&lt;br /&gt;&lt;br /&gt;Normally in SharePoint when we create any site column or content type through SharePoint user interface that will go and stored into content database in the form of CAML, so we can run simple sql query and get that data and build it into features and deploy the same in some other environment means production&lt;br /&gt;&lt;br /&gt;Steps&lt;br /&gt;&lt;br /&gt;1. create sitecoumns and content types using SP user interface&lt;br /&gt;&lt;br /&gt;2. connect to sql server database&lt;br /&gt;&lt;br /&gt;3. Execute below query&lt;br /&gt;&lt;br /&gt;   &quot;Select definition from content types where definition is not null&quot;&lt;br /&gt;&lt;br /&gt;4. you can see all site columns and content types in form CAML&lt;br /&gt;&lt;br /&gt;5. just extract that and build a features and deploy</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/469213171632720126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2010/06/creating-site-columns-thorugh-sql-query.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/469213171632720126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/469213171632720126'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2010/06/creating-site-columns-thorugh-sql-query.html' title='Creating site columns thorugh SQL query'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-2059581213529820574</id><published>2010-06-11T17:11:00.000-07:00</published><updated>2011-03-25T20:34:11.087-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Acces denied error in sharepoint 2007"/><category scheme="http://www.blogger.com/atom/ns#" term="SPContent.current.web"/><title type='text'>Access denied error when code runs with SPsecurity.RunWithElevatedPriviliges</title><content type='html'>Today, while reviewing code ,I have found some thing, which will give access denied error if our code runs with SPSecurity.RunWithElevatedPriviliges and AllowUnsafeUpdates = true&lt;br /&gt;&lt;br /&gt;Check the piece of code which I have written below that gives access denied error&lt;br /&gt;&lt;br /&gt;using (SPSite site = new SPSite(SPContext.Current.Web))&lt;br /&gt;{&lt;br /&gt;SPList list = web.Lists[listUrl];&lt;br /&gt;SPFieldCollection fieldCol = list.Fields;&lt;br /&gt;SPListItem newItem = list.Items.Add();&lt;br /&gt;foreach (SPField field in fieldCol)&lt;br /&gt;{&lt;br /&gt;if (!field.Hidden &amp;amp;&amp;amp; !field.ReadOnlyField)&lt;br /&gt;{&lt;br /&gt;if (field.Title.Equals(question, StringComparison.OrdinalIgnoreCase))&lt;br /&gt;{&lt;br /&gt;newItem[field.Title] = answer;&lt;br /&gt;web.AllowUnsafeUpdates = true;&lt;br /&gt;newItem.Update();&lt;br /&gt;web.AllowUnsafeUpdates = false;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The main problem here is that the current request will execute under the priviligies of anonymous user credentials because user is a anonymous user, so this code always gives access denied error&lt;br /&gt;&lt;br /&gt;The web object is created using SPContext, so this web object is runs under credentials of spcontext, so this always gives problem&lt;br /&gt;&lt;br /&gt;using (SPSite site = new SPSite(SPContext.Current.Site.ID))&lt;br /&gt;{&lt;br /&gt;using(SPWeb web = site.OpenWeb())&lt;br /&gt;{&lt;br /&gt;SPList list = web.Lists[listUrl];&lt;br /&gt;SPFieldCollection fieldCol = list.Fields;&lt;br /&gt;SPListItem newItem = list.Items.Add();&lt;br /&gt;foreach (SPField field in fieldCol)&lt;br /&gt;{&lt;br /&gt;if (!field.Hidden &amp;amp;&amp;amp; !field.ReadOnlyField)&lt;br /&gt;{&lt;br /&gt;if (field.Title.Equals(question, StringComparison.OrdinalIgnoreCase))&lt;br /&gt;{&lt;br /&gt;newItem[field.Title] = answer;&lt;br /&gt;web.AllowUnsafeUpdates = true;&lt;br /&gt;newItem.Update();&lt;br /&gt;web.AllowUnsafeUpdates = false;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The above code will run under credentials of system account that means with full permissons so this will execute fine here &lt;strong&gt;the difference is we are creting spsite object with url not from current context and the SPsecurity.RunWithElevatedPriviges will work fine here&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/2059581213529820574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2010/06/access-denied-error-when-code-runs-with.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2059581213529820574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/2059581213529820574'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2010/06/access-denied-error-when-code-runs-with.html' title='Access denied error when code runs with SPsecurity.RunWithElevatedPriviliges'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-1801049428664624775</id><published>2010-02-28T02:21:00.000-08:00</published><updated>2010-10-21T11:05:19.084-07:00</updated><title type='text'>Another reusable component - Site Columns and Content Type generator</title><content type='html'>&lt;div&gt;I have seen so many people struggling to create sitecolumns and contenttypes in CAML format while developing sharepoint aplications. Some people spend days to complete these and some people spend hours depends on their knowledge on sharepoint, recently I have created webpart which will give sitecolumns and contenttypes in the form of CAML the main advantage of this is you will get complete features folder&lt;br /&gt;&lt;br /&gt;you just need to deploy this into ur 12 hive features folder just install and activate&lt;br /&gt;&lt;br /&gt;I just completed beta version of this webpart need to test and upload this into my blog&lt;br /&gt;&lt;br /&gt;I hope this will save lot of time for each and every developer, min 1hour&lt;br /&gt;&lt;br /&gt;First create your site columns using sharepoint GUI&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creating Site Columns&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Site Actions&lt;br /&gt;&lt;br /&gt;Modify All settings&lt;br /&gt;&lt;br /&gt;Galleries&lt;br /&gt;&lt;br /&gt;Site Columns&lt;br /&gt;&lt;br /&gt;Create&lt;br /&gt;&lt;br /&gt;Enter Column name , choose appropriate data type and click on create&lt;br /&gt;&lt;br /&gt;This will create site column for you in sharepoint create as many you want&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Creating Site Content Types&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Site Actions&lt;br /&gt;&lt;br /&gt;Modify All settings&lt;br /&gt;&lt;br /&gt;Galleries&lt;br /&gt;&lt;br /&gt;Site Content Types&lt;br /&gt;&lt;br /&gt;Create&lt;br /&gt;&lt;br /&gt;Provide Name and click on ok, this will create your content type&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Adding columns to the content type&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Go to content type gallery&lt;br /&gt;&lt;br /&gt;Select content type the one which you created recently&lt;br /&gt;&lt;br /&gt;Click on add from existing site columns&lt;br /&gt;&lt;br /&gt;Select site columns and click on Ok&lt;br /&gt;&lt;br /&gt;This will create content types for you&lt;br /&gt;&lt;br /&gt;Now install RSM.Exporter webpart on respective webapplication&lt;br /&gt;&lt;br /&gt;Add that webpart in any page of ur web application the webpart will dispaly as shown in fig&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDCqd9VSJw3MuMFHNLDJVVWaqQUbLYLUaTQ_hGNpAk-juoxDnF3zpLdGe0HYFp29YCxCDZurO4fckrw-tLtCQ1WDeBiQSfOyqcgckmXoJAc-_nAVVsIhQ4DDdftr0RxTW8vISWKYyruiiW/s1600/Screen1.bmp&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 148px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDCqd9VSJw3MuMFHNLDJVVWaqQUbLYLUaTQ_hGNpAk-juoxDnF3zpLdGe0HYFp29YCxCDZurO4fckrw-tLtCQ1WDeBiQSfOyqcgckmXoJAc-_nAVVsIhQ4DDdftr0RxTW8vISWKYyruiiW/s320/Screen1.bmp&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5530561869790078690&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;you just enter your site column feature name on site columns textbox and provide description for your feature and do same thing for site content types also and click on create sitecolumns and content types feature button&lt;br /&gt;&lt;br /&gt;Now go to your &quot;C://&quot; drive and check &quot;RsmmTechno&quot; folder there you can find two folders one is for site columns and another one is for content types&lt;br /&gt;&lt;br /&gt;So we have successfully completed creation of site columns and content types features now we need to create a page layouts based on content types&lt;br /&gt;&lt;br /&gt;Steps to create page layouts :&lt;br /&gt;&lt;br /&gt;Select content type which you want to attach to the page layout from content type drop downlist&lt;br /&gt;&lt;br /&gt;Enter page layout feature name &lt;br /&gt;&lt;br /&gt;Enter page layout name&lt;br /&gt;&lt;br /&gt;Select fields which you want to render while creating page using page layout from the list box&lt;br /&gt;&lt;br /&gt;Click on create page layout feature&lt;br /&gt;&lt;br /&gt;Once again go to your &quot;C://&quot; drive and check &quot;RsmmTechno&quot; folder there you can find page layout feature along with site columns and content type as shown in below fig&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgClsJayAGTLKlQTYXwwucQPRWH2pObmhR0EFZDKcrEMdC4ZQd5w2f3g8S-_GI4pwg9IbpZ4EOUe8iyuJif5yntx7v_7lQAUbj7bKl703ygM-Ht_xuHlpsf11K2cVW_PMrze8WLNJYiiJ6N/s1600/screen2.bmp&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 86px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgClsJayAGTLKlQTYXwwucQPRWH2pObmhR0EFZDKcrEMdC4ZQd5w2f3g8S-_GI4pwg9IbpZ4EOUe8iyuJif5yntx7v_7lQAUbj7bKl703ygM-Ht_xuHlpsf11K2cVW_PMrze8WLNJYiiJ6N/s320/screen2.bmp&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5530558462328170610&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just open each and every folder you can find feature.xml file and element.xml files as shown in below fig&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS9i8fWgNKjtYf-yXU_UELV7fMu5al776GKdVA0_r6vUZIklBXNPzJyG350ttWF2z3zE1bBvWFu2rStbJWyWhwFSOPx-scAR0bQ-egdxua3uVsygZ8wyn5AbAGvCkyoR5emS-9TMQCJWDK/s1600/screen3.bmp&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 102px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhS9i8fWgNKjtYf-yXU_UELV7fMu5al776GKdVA0_r6vUZIklBXNPzJyG350ttWF2z3zE1bBvWFu2rStbJWyWhwFSOPx-scAR0bQ-egdxua3uVsygZ8wyn5AbAGvCkyoR5emS-9TMQCJWDK/s320/screen3.bmp&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5530560129547930802&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl2zDa03xEalZbahJ7Ya7efAwuqtR6m1i2GnGfSayn7D_SCio0dZlQRSkuuPsHfrLGwCKXD73A8xn-gTCLfA5FtvBRVC1oFyWDLTf-KVL1uvr_W0q_sH486QOgKj6sFiPH1jv1I4Gf2wYv/s1600/screen4.bmp&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 105px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl2zDa03xEalZbahJ7Ya7efAwuqtR6m1i2GnGfSayn7D_SCio0dZlQRSkuuPsHfrLGwCKXD73A8xn-gTCLfA5FtvBRVC1oFyWDLTf-KVL1uvr_W0q_sH486QOgKj6sFiPH1jv1I4Gf2wYv/s320/screen4.bmp&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5530560139289412770&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaB21qNtSgBdmpSU6Vb_H5P1cDUxzolXdQN1SZbWYeCc5fcwUqzda_sEnOSOOYaVcrSR-OkIKsSAw2JqjWCeS-l5tUm-421Kdm-ilHBWg6AO4B76iWQhXMRCT7Ooydh0k6usFDo4W0fhHL/s1600/screen5.bmp&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 102px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaB21qNtSgBdmpSU6Vb_H5P1cDUxzolXdQN1SZbWYeCc5fcwUqzda_sEnOSOOYaVcrSR-OkIKsSAw2JqjWCeS-l5tUm-421Kdm-ilHBWg6AO4B76iWQhXMRCT7Ooydh0k6usFDo4W0fhHL/s320/screen5.bmp&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5530560142291640802&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, Install and activate features &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhODwPxr5mBQe1N7CaHQGwLbZRu1X-tHW8fO3fuAARaq95_zYSt2SofFkb7vAEcHX_RfN9JFlsLbq2YvwlEVSljXB1NCEl8CDyM2IOF_XgSXZq34gub4Ve0UYrkRb8YasaGUogGNGXqnttk/s1600/screen6.bmp&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 164px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhODwPxr5mBQe1N7CaHQGwLbZRu1X-tHW8fO3fuAARaq95_zYSt2SofFkb7vAEcHX_RfN9JFlsLbq2YvwlEVSljXB1NCEl8CDyM2IOF_XgSXZq34gub4Ve0UYrkRb8YasaGUogGNGXqnttk/s320/screen6.bmp&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5530560150439831138&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a page using page layout &lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_4jk3glRBQA3kR8RUWkxW84UJXpmTZ4ttmGpndJEioTrKC7BrOcdgmWkXMCXC0yN2w6lSiCaLldiqop5YTdP1Upn9BBsSk5ERxZisOnssaObGnSX01BR-u7sDMSKeonrqw_owmj8a8FdG/s1600/screen7.bmp&quot;&gt;&lt;img style=&quot;display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 154px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_4jk3glRBQA3kR8RUWkxW84UJXpmTZ4ttmGpndJEioTrKC7BrOcdgmWkXMCXC0yN2w6lSiCaLldiqop5YTdP1Upn9BBsSk5ERxZisOnssaObGnSX01BR-u7sDMSKeonrqw_owmj8a8FdG/s320/screen7.bmp&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5530560159908129906&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I think this will help you guys a lot, no need of breaking heads what is the syntax for this sitecolumn  content type and page layout etc...&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/1801049428664624775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2010/02/i-have-seen-so-many-people-struggling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/1801049428664624775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/1801049428664624775'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2010/02/i-have-seen-so-many-people-struggling.html' title='Another reusable component - Site Columns and Content Type generator'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDCqd9VSJw3MuMFHNLDJVVWaqQUbLYLUaTQ_hGNpAk-juoxDnF3zpLdGe0HYFp29YCxCDZurO4fckrw-tLtCQ1WDeBiQSfOyqcgckmXoJAc-_nAVVsIhQ4DDdftr0RxTW8vISWKYyruiiW/s72-c/Screen1.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7246980608594539492.post-7668379702923254062</id><published>2010-02-24T22:43:00.000-08:00</published><updated>2010-03-25T08:45:38.712-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="App_GlobalResources"/><category scheme="http://www.blogger.com/atom/ns#" term="Custom resource files"/><category scheme="http://www.blogger.com/atom/ns#" term="Features"/><category scheme="http://www.blogger.com/atom/ns#" term="Microsoft SharePoint Server 2007"/><title type='text'>Deploying Custom Resource files into &quot;App_GloablResources&quot;</title><content type='html'>Normally, when you create new webapplication in sharepoint the system will automatically copies all resources files from \\12\Config\Resources folder to respective webapplication Virtual directory &quot;App_GlobalResources&quot; folder this will work fine in normal scenarios, so in deployment you can just place your custom resources files into 12 hive Resources folder and create webapplication everything will work fine&lt;br /&gt;&lt;br /&gt;But some times we may have to install some kind of upgradion packages with out affecting existing system which contains custom resource files? What would be the approach if we want to place all custom resources files into already created webapplication???&lt;br /&gt;&lt;br /&gt;Options to deploy resources files in existing webapplication&lt;br /&gt;&lt;br /&gt;1. We have to create deployment document and saying that copy and paste all the files into &quot;App_GlobalResurces&quot; folder&lt;br /&gt;&lt;br /&gt;2. Create a separate feature and while activating that feature write a code to copy and paste all the files from feature folder to &quot;App_GlobalResources&quot; folder&lt;br /&gt;&lt;br /&gt;Personally I prefer second approach&lt;br /&gt;&lt;br /&gt;Please check below image to find out folder structre and where all resource files are placed&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgB3GxoaNzn4CdP_tA4d2F97dAZw4f1xWRPCvW78CqT7B2KJuNXvC12RmZXSiWts62TuE6FQyOl5GcN_IixBmGokFQ05pFw-FsqBajlDrcOqnOdXpKps68xO_WHdKLlLyBmZ6OQsoFS6Jc/s1600-h/Features.JPG&quot;&gt;&lt;img style=&quot;TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 273px; DISPLAY: block; HEIGHT: 307px; CURSOR: hand&quot; id=&quot;BLOGGER_PHOTO_ID_5443214153860424338&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgB3GxoaNzn4CdP_tA4d2F97dAZw4f1xWRPCvW78CqT7B2KJuNXvC12RmZXSiWts62TuE6FQyOl5GcN_IixBmGokFQ05pFw-FsqBajlDrcOqnOdXpKps68xO_WHdKLlLyBmZ6OQsoFS6Jc/s320/Features.JPG&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Just create feature with event receiver class in the FeatureActivated event write below code&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;using Microsoft.SharePoint;&lt;br /&gt;using Microsoft.SharePoint.Administration;&lt;br /&gt;using System.IO;&lt;br /&gt;using Microsoft.SharePoint.Utilities;&lt;br /&gt;namespace RSMTechno.DeployGlobalResources&lt;br /&gt;{&lt;br /&gt;class DeployGlobalResources : SPFeatureReceiver&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;public override void FeatureActivated(SPFeatureReceiverProperties properties)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;string sourcePath = string.Empty;&lt;br /&gt;SPSite site = (SPSite)properties.Feature.Parent;&lt;br /&gt;SPWeb web = site.OpenWeb();&lt;br /&gt;//sourcepath is the path where all resource files are stored&lt;br /&gt;sourcePath = string.Format(&quot;{0}\\FEATURES\\{1}\\&quot;, SPUtility.GetGenericSetupPath(&quot;TEMPLATE&quot;), properties.Definition.DisplayName);&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;SPWebApplication webApp = web.Site.WebApplication;&lt;br /&gt;&lt;br /&gt;foreach (SPUrlZone urlZone in webApp.IisSettings.Keys)&lt;br /&gt;{&lt;br /&gt;SPIisSettings settings = webApp.IisSettings[urlZone];&lt;br /&gt;string destinationPath = Path.Combine(settings.Path.ToString(), &quot;App_GlobalResources&quot;);&lt;br /&gt;string[] filePaths = Directory.GetFiles(sourcePath, &quot;*.resx&quot;);&lt;br /&gt;foreach (string filePath in filePaths)&lt;br /&gt;{&lt;br /&gt;string fileName = Path.GetFileName(filePath);&lt;br /&gt;File.Copy(filePath, Path.Combine(destinationPath, fileName), true);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;catch (Exception)&lt;br /&gt;{&lt;br /&gt;throw new Exception(&quot;Failed to copy files&quot;);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Then build the application and deploy and activate the feature everything will work fine&lt;br /&gt;&lt;br /&gt;Click here to download source code &lt;a href=&quot;http://www.freedrive.com/file/1125548,rsmtechno.deploygloablresources.zip&quot;&gt;RSMTechno.DeployGlobalResourceFilesCode&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://mspbox.blogspot.com/feeds/7668379702923254062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://mspbox.blogspot.com/2010/02/normally-when-you-create-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7668379702923254062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7246980608594539492/posts/default/7668379702923254062'/><link rel='alternate' type='text/html' href='http://mspbox.blogspot.com/2010/02/normally-when-you-create-new.html' title='Deploying Custom Resource files into &quot;App_GloablResources&quot;'/><author><name>TECHTalk Mondays</name><uri>http://www.blogger.com/profile/09028667384164531609</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgB3GxoaNzn4CdP_tA4d2F97dAZw4f1xWRPCvW78CqT7B2KJuNXvC12RmZXSiWts62TuE6FQyOl5GcN_IixBmGokFQ05pFw-FsqBajlDrcOqnOdXpKps68xO_WHdKLlLyBmZ6OQsoFS6Jc/s72-c/Features.JPG" height="72" width="72"/><thr:total>0</thr:total></entry></feed>