<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title><![CDATA[.NET Forge Blogs: New Posts]]></title>
    <link>http://www.bitrix.net/</link>
    <description><![CDATA[New blog posts in category ".NET Forge Blogs" of "Bitrix .NET Forge English"]]></description>
    <language>en-US</language>
    <lastBuildDate>Sat, 25 May 2013 03:46:22 UT</lastBuildDate>
    <generator><![CDATA[bitrix::blog.rss]]></generator>
    <docs>http://cyber.law.harvard.edu/rss/rss.html</docs>
    <atom:link href="http://www.bitrix.net/blogs//rss/" rel="self" type="application/rss+xml" />
    <item>
      <title><![CDATA[6.0.8 Updates for your system]]></title>
      <link>http://www.bitrix.net/blogs/netforge/57/</link>
      <description><![CDATA[We finished our work on some important updates for 6.0.8.&#160; They include bug fixes and new functionality: 
<br/>


 
<br/>


 New features: 
<br/>


 
<ul> 
<li>Customized Information block element creation forms</li>


 
<li>Collaborative blogs</li>


 
<li>Support of authentication and authroization via Active Directory / LDAP</li>


 </ul>
 ]]></description>
      <category><![CDATA[update]]></category>
      <category><![CDATA[new version]]></category>
      <guid isPermaLink="false">urn:bitrix:blog:post:57</guid>
      <pubDate>Tue, 13 Sep 2011 08:45:33 UT</pubDate>
      <dc:creator><![CDATA[Ann Slyshkina]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[6.0.7 Updates for your system]]></title>
      <link>http://www.bitrix.net/blogs/netforge/55/</link>
      <description><![CDATA[<p style="margin-bottom: .0001pt; line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Update 6.0.7 for Bitrix .NET Forge is now available. It includes fixes in the <span>Main</span> and <span>Information Blocks</span> modules.</span></p> <p style="margin-bottom: .0001pt; line-height: normal"> </p> <p style="margin-bottom: .0001pt; line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Updates description:</span></p> <ul>  <li style="line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Insert include area (bitrix:includeArea) </span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">component: fixed bug in path handling;</span></li>

 <li style="line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Catalog (</span><span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">bitrix:catalogue</span></span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">) component: </span><span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">filtering items by custom properties values</span></span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">;</span></li>

 <li style="line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Control Panel: fixed the link for Live ID key request.</span></li>

 </ul> <p><span style="font-size: 12pt; line-height: 115%; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Integration with Active Directory and </span><span><span style="font-size: 12pt; line-height: 115%; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">collective</span></span><span><span style="font-size: 12pt; line-height: 115%; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;"> </span></span><span><span style="font-size: 12pt; line-height: 115%; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">blogs will be available in the </span></span><span><span style="font-size: 12pt; line-height: 115%; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">upcoming</span></span><span><span style="font-size: 12pt; line-height: 115%; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;"> updates.</span></span></p> ]]></description>
      <category><![CDATA[update]]></category>
      <category><![CDATA[new version]]></category>
      <guid isPermaLink="false">urn:bitrix:blog:post:55</guid>
      <pubDate>Mon, 29 Aug 2011 13:01:23 UT</pubDate>
      <dc:creator><![CDATA[Ann Slyshkina]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[How to add syntax highlighting to .NET Forge CMS forum]]></title>
      <link>http://www.bitrix.net/blogs/recipes/54/</link>
      <description><![CDATA[<p>In this article I will show how to add syntax highlighting feature to .NET Forge CMS forum, by writing about 50 lines of code.</p>  ]]></description>
      <category><![CDATA[code highlighting]]></category>
      <guid isPermaLink="false">urn:bitrix:blog:post:54</guid>
      <pubDate>Wed, 17 Aug 2011 07:21:54 UT</pubDate>
      <content:encoded><![CDATA[<p>In this article I will show how to add syntax highlighting feature to .NET Forge CMS forum, by writing about 50 lines of code.</p> <p>.NET Forge CMS forum post editor allows you to insert code snippets to you post, but when you add post you’ll see gray text like this:</p> <p><!--noindex--><a href="http://www.bitrix.net/upload/blog/recipes/5d4/image_2.png" rel="nofollow"><img src="http://www.bitrix.net/upload/blog/recipes/2f2/image_thumb.png" alt="image" title="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/></a><!--/noindex--></p> <p>Unfortunately, our system do not have code highlighting feature in forums, but on sites such as ours or <!--noindex--><a href="http://www.gotdotnet.ru/" rel="nofollow">gotdotnet.ru</a><!--/noindex--> highlighting do exists. It is made as a custom feature, using third-party free highlighting javascript plugin. It could be easily integrated in any our site. So, let’s begin.</p> <p>First of all, to make an example integration I installed “Community site” solution from the list of available fast to deploy sites in CMS installation wizard. I have chosen that solution because it have forum with some posts ready to work with. Of course, our intergration won’t depend on this particular solution. </p> <p>Now we have a forum, let’s get highlighting plugin itself. It is called Syntax Highlighter, and can be downloaded on <!--noindex--><a href="http://alexgorbatchev.com/SyntaxHighlighter/download/" rel="nofollow">product download page</a><!--/noindex--> on site of it’s developer. The product archive contains quite a lot of files, basically we need these:</p> <ul>  <li><b>/scripts/shCore.js</b> – plugin core script </li>

 <li><b>/styles/shCore.css</b> – common styles</li>

 <li><b>/styles/shCoreDefault.css</b> – default color scheme styles</li>

 <li> Js files from <b>brushes</b> folder – we need to select highlighting brushes for needed languages, in this example we will use files for C# and SQL - <b>shBrushCSarp.js</b>, <b>shBrushSql.js</b></li>

 </ul> <p>Then we put these scripts to /js folder in our site, and style – to /css folder. Now, we have to incude references to them in our template.master, between &lt;head&gt; and &lt;/head&gt; tags:</p> <div class="blog-code-box"><pre class="xml">&lt;&lt;%= &quot;link&quot; %&gt; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;&lt;%= SitePath %&gt;/css/shcore.css&quot; /&gt; 
&lt;&lt;%= &quot;link&quot; %&gt; rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;&lt;%= SitePath %&gt;/css/shcoredefault.css&quot; /&gt; 
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%= SitePath %&gt;js/shCore.js&quot;&gt;&lt;/script&gt; 
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%= SitePath %&gt;js/shBrushSQL.js&quot;&gt;&lt;/script&gt; 
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%= SitePath %&gt;js/shBrushCSharp.js&quot;&gt;&lt;/script&gt; </pre></div>  <br/>

<p>Now we need to write some code on our own, the code that will find all blocks that have to be highlighted and will call <strong>highlight</strong> method of our plugin on all them. Let’s create main.js file in /js folder in fill it with the following code:</p> <p> </p> <div class="blog-code-box"><pre class="jscript">if (typeof (MySite) == &quot;undefined&quot;)
	MySite = new Object();
//helper method, searches brush from collection by name
MySite.findBrush = function (brushName, brushes) {

	for (var brush in brushes) {
		if (!brushes.hasOwnProperty(brush))
			continue;
		var br = brushes[brush];
		if (!br.aliases)
			continue;
		for (var i = 0; i &lt; br.aliases.length; i++)
			if (br.aliases[i] == brushName)
				return true;
	}
	return false;
}
//find all blocks of code that requires highlighting and calls SyntaxHighlighter.highlight for all of them
MySite.HighlightCode = function () {

	var element = document.getElementById(&#39;content&#39;);
	if (!element)
		return;

	var tagss = element.getElementsByTagName(&#39;PRE&#39;);
	if (!tagss || !tagss.length)
		return;

	var tags = [];
	for (var i = 0; i &lt; tagss.length; ++i)
		tags.push(tagss[i]);

	for (var i = 0; i &lt; tags.length; ++i) {
		var tag = tags[i];
		var parentNode = tag.parentNode; if (!parentNode || parentNode.tagName != &#39;DIV&#39; || (parentNode.className != &#39;forum-code-box&#39; &amp;&amp; parentNode.className != &#39;blog-code-box&#39;))
			continue;

		var brush = tag.className;
		if (MySite.findBrush(brush, SyntaxHighlighter.brushes))
			SyntaxHighlighter.highlight({ brush: brush }, tag);
		else
			SyntaxHighlighter.highlight({ brush: &quot;c#&quot; }, tag);
	}
}
//Creates forum quotation processor for right displaying code when qouting, this code executes
//when user click on &quot;quote&quot; link and returnes code text without makrup added by syntax highlighter. Next this text will
//become quote text 

if (typeof (Bitrix) == &quot;undefined&quot;)
	Bitrix = new Object();
if (typeof (Bitrix.ForumQuotationProcessors) == &quot;undefined&quot;)
 Bitrix[&quot;ForumQuotationProcessors&quot;] = new Object();

Bitrix.ForumQuotationProcessors[&quot;SyntaxHighlighter&quot;] = function (html) {

	var m = null;
	if (typeof (window.SyntaxHighlighter) != &quot;undefined&quot;){
		var m = (/\&lt;div[^\&gt;]*?class=\&quot;syntaxhighlighter[^\&quot;]*\&quot;[^\&gt;]*?\&gt;/i).exec(html);
		if(m!=null){
			m = (/\&lt;div[^\&gt;]*?id=\&quot;?(\w+)\&quot;?[^\&gt;]*?\&gt;/i).exec(m[0]);

			if(m!=null &amp;&amp; m[1] in window.SyntaxHighlighter.vars.highlighters)
				return window.SyntaxHighlighter.vars.highlighters[m[1]].code;
			}
		}
	return null;
} </pre></div>  <br/>

<p>Adding another reference to main.js to template.master between &lt;head&gt; and &lt;/head&gt;:</p> <p> </p> <div class="blog-code-box"><pre class="xml">
&lt;script type=&quot;text/javascript&quot; src=&quot;&lt;%= SitePath%&gt;js/main.js&quot;&gt;&lt;/script&gt;</pre></div>  <p>And the last thing – we have to register a call to our HighlightCode method as startup script, so it will be executed after a page is successfully loaded. Let’s use RegisterStartupScript of Page.ClientScript object to achieve this. We can put this code in template.master or just in forum page:</p> <div class="blog-code-box"><pre class="csharp">protected override void OnLoad(EventArgs e)
{
   base.OnLoad(e);		    
Page.ClientScript.RegisterStartupScript(Page.GetType(), &quot;highlightcode&quot;, &quot;MySite.HighlightCode();&quot;, true);
}</pre></div>  <br/>

<p>Now, if everything was done right, we’ll see our code highlighted after page reload:</p> <p><!--noindex--><a href="http://www.bitrix.net/upload/blog/recipes/383/image_4.png" rel="nofollow"><img src="http://www.bitrix.net/upload/blog/recipes/3dd/image_thumb_1.png" alt="image" title="image" border="0" style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px"/></a><!--/noindex--></p>  ]]></content:encoded>
      <dc:creator><![CDATA[Alexander Buynyachenko]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[6.0.6 Updates for your system]]></title>
      <link>http://www.bitrix.net/blogs/netforge/50/</link>
      <description><![CDATA[<p style="margin-bottom: .0001pt; line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Update 6.0.6 for Bitrix .NET Forge is now available. It includes fixes in the <i>Main</i> and<span> </span><i>Information Blocks</i> modules.</span></p> <p style="margin-bottom: .0001pt; line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">  <br/>

</span></p> <span style="font-size: 12pt; line-height: 115%; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Updates description: <br/>

</span>  <ul>  <li style="line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">site template editing page (~/bitrix/admin/TemplateEdit.aspx): </span><span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">fixed bugs</span></span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;"> occurring <span>when a new template is saved – saving of a template name, its description and path;</span></span></li>

 <li style="line-height: normal"><b><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Insert include area (bitrix:includeArea) </span></b><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">component: <span>fixed bug</span> occurring <span>when creating a new included area in a non-existent folder;</span></span></li>

 <li style="line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Main module: fixed bug when reading a cache file</span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;"> with links to <span>inaccessible</span> <span>dynamic assemblies</span>;</span></li>

 <li style="line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">Main module: optimization of<span> </span>users </span><span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">authentication</span></span><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;"> mechanism;</span></li>

 <li style="line-height: normal"><span style="font-size: 12pt; font-family: &quot;Times New Roman&quot;, &quot;serif&quot;">photogallery components: fixed bugs in templates.</span> </li>

 </ul> ]]></description>
      <category><![CDATA[update]]></category>
      <category><![CDATA[new version]]></category>
      <guid isPermaLink="false">urn:bitrix:blog:post:50</guid>
      <pubDate>Tue, 12 Jul 2011 08:26:52 UT</pubDate>
      <dc:creator><![CDATA[Ann Slyshkina]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Authentication against Active Directory  + .NET Forge]]></title>
      <link>http://www.bitrix.net/blogs/sntx/49/</link>
      <description><![CDATA[<p>How can one authenticate against Active Directory? This question recently came up in our forum. I answered that the <b><i><!--noindex--><a href="http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx" rel="nofollow">ActiveDirectoryMembershipProvider class</a><!--/noindex--> </i></b> is a full-service provider for authentication for Active Directory. But that lead to other questions: how does one &#39;register&#39; the provider correctly? Can 2 providers be active at the same time? How can users from different domains be authenticated? Realizing that this was only the beginning, and that the forum would not be the best position to fend off the barrage, I retired, promising to cover the matter(s) in my blog. Here is the keeping of that promise. </p>  ]]></description>
      <category><![CDATA[Authentication Active Directory]]></category>
      <guid isPermaLink="false">urn:bitrix:blog:post:49</guid>
      <pubDate>Tue, 12 Jul 2011 06:19:29 UT</pubDate>
      <content:encoded><![CDATA[<p>How can one authenticate against Active Directory? This question recently came up in our forum. I answered that the <b><i><!--noindex--><a href="http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx" rel="nofollow">ActiveDirectoryMembershipProvider class</a><!--/noindex--> </i></b> is a full-service provider for authentication for Active Directory. But that lead to other questions: how does one &#39;register&#39; the provider correctly? Can 2 providers be active at the same time? How can users from different domains be authenticated? Realizing that this was only the beginning, and that the forum would not be the best position to fend off the barrage, I retired, promising to cover the matter(s) in my blog. Here is the keeping of that promise. </p>   <p> So, our task is to authenticate users of a site through Active Directory. Usually, this issue comes up when a website is being created for an organization that has Active Directory deployed.</p> <p>So, let’s get to it. We launch .NET Forge Community. In the configuration wizard, we mark &#39;Do not install a site solution&#39; – we’ll start from a clean slate.</p> <p style="background-color: rgb(238, 238, 238)"><b>Note: </b><b><i><!--noindex--><a href="http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx" rel="nofollow">ActiveDirectoryMembershipProvider</a><!--/noindex--> </i></b> requires the Full Trust level settings.</p> <p>Strict security policy is required for сorporate a corporate website. We’ll disable access to anonymous users. We choose the &#39;Section(Folder) Access&#39; point in the &#39;Edit Section&#39; menu and revoke the &#39;Execute executable files&#39; from the &#39;All Users&#39; and grant that only to the &#39;Registered Users&#39;.</p> <p>To authenticate users in the site root, we create an entry page (login.aspx), setting only the Authentication on it (system.auth) with the default settings. We open this page to anonymous users by choosing &#39;Access&#39; in the &#39;Edit Page&#39; menu and grant the &#39;Execute executable files&#39; to the &#39;All Users&#39;. Now &#39;strangers&#39; will not be permitted beyond the opening page of the site.</p> <p>Now we’ll activate the authentication provider for Active Directory. This requires editing the <b><i>web.config</i></b>. Add a connection string to Active Directory in the <b><i>connectionStrings</i></b>.</p> <p><div class="blog-code-box"><pre class="xml">&lt;connectionStrings&gt;
    &lt;add name=&quot;BXConnectionString&quot; connectionString=&quot;Data Source=.\sql;Initial Catalog=fce;User ID=sa;Password=password&quot; /&gt;	
    &lt;add name=&quot;NetForgeConnectionString&quot; connectionString=&quot;LDAP://dc.netforge.loc/CN=Users,DC=netforge,DC=loc&quot; /&gt;
    &lt;!-- name – we will use it later; --&gt;
    &lt;!-- connectionString – LDAP Connection String. --&gt;
&lt;/connectionStrings&gt;
</pre></div></p> <p>Determining the <b><i>connectionString</i></b> parameter may present some difficulties, so we will spend some time on this. The format of a connection string is <b><i>LDAP://server/dn</i></b>. As you see, it’s in URI format, starting with the definition of the protocol name <b><i>LDAP</i></b> (in all-caps). Then <b><i>server</i></b> – this is the name of the server, domain or IP address. In the documentation, there is a strong recommendation to use the <!--noindex--><a href="http://en.wikipedia.org/wiki/Fully_qualified_domain_name" rel="nofollow">fully qualified domain name or FQDN</a><!--/noindex-->. The next item, <b><i>dc.netforge.loc</i></b>, is the server <b><i>dc</i></b> in the domain <b><i>netforge.loc</i></b>. The connection is usually set on port 389. If your Active Directory server is set on a different port, you will need to enter the point number (for example: dc.netforge.loc:377). Lastly, we have <b><i>dn</i></b> – the <i>distinguished name</i> of the object, which is comprised of a list of &#39;relative distinguished names&#39;, separated by commas. A relative distinguished name has the form <i>NameAttribute=Value</i>. <b><i>CN=User,DC=netforge,DC=loc</i></b> – the group <b><i>Users</i></b> (attribute <i>CN</i> – container), domain <b><i>netforge.loc</i></b> (attributer <i>DC</i> – domain component).</p> <p>Now we create a new authentication provider, which will be a user created using the connection string to Active Directory.</p> <p><div class="blog-code-box"><pre class="xml">&lt;system.web&gt;
    &lt;!-- omitted code --&gt;
    &lt;membership defaultProvider=&quot;BXSqlMembershipProvider&quot; userIsOnlineTimeWindow=&quot;15&quot;&gt;
        &lt;providers&gt;
            &lt;clear /&gt;
            &lt;add name=&quot;BXSqlMembershipProvider&quot; type=&quot;Bitrix.Security.BXSqlMembershipProvider&quot; connectionStringName=&quot;BXConnectionString&quot; enablePasswordRetrieval=&quot;false&quot; enablePasswordReset=&quot;true&quot; requiresCheckWord=&quot;true&quot; maxInvalidPasswordAttempts=&quot;2147483647&quot; minRequiredNonalphanumericCharacters=&quot;0&quot; minRequiredPasswordLength=&quot;6&quot; requiresQuestionAndAnswer=&quot;false&quot; /&gt;
            &lt;add name=&quot;NetForgeMembershipProvider&quot; type=&quot;System.Web.Security.ActiveDirectoryMembershipProvider&quot; connectionStringName=&quot;NetForgeConnectionString&quot; connectionUsername=&quot;NETFORGE\admin&quot; connectionPassword=&quot;password&quot; /&gt;
            &lt;!-- type -  type of ActiveDirectoryMembershipProvider; --&gt;
            &lt;!-- connectionStringName – name of LDAP Connection String that we have added in  connectionStrings section; --&gt;
            &lt;!-- connectionUsername – name of account with appropriate privileges; --&gt;
            &lt;!-- connectionPassword – password of account specified in connectionUsername. --&gt;
        &lt;/providers&gt;
    &lt;/membership&gt;
&lt;/system.web&gt;</pre></div></p> <p style="background-color: rgb(238, 238, 238)"><b>Note: </b> <b><i>connectionUsername</i></b> and <b><i>connectionPassword</i></b> have to be supplied in plain text. If domain admin account is specified, you should <!--noindex--><a href="http://msdn.microsoft.com/ru-ru/library/dtkwfdky.aspx" rel="nofollow">encrypt</a><!--/noindex--> this configuration section along with the <b><i>connectionStrings</i></b> section.</p> <p>Please note that the <i>BXSqlMembershipProvider </i>hasn&#39;t been removed. It is done to allow the built-in administrator to log in. The Authentication system will perform authentication against each provider sequentially. It will stop on success or at end of the sequence. That is why order is important. In our example, <i> ActiveDirectoryMembershipProvider </i>goes after <i> BXSqlMembershipProvider </i>due to performance considerations. In my test environment <i> BXSqlMembershipProvider </i>responds much faster than <i> ActiveDirectoryMembershipProvider</i>.</p> <p>Let’s test our solution. We open the site and try to enter as a user <b><i>zg</i> </b>of the <b><i>netforge.loc</i></b> domain . The user name is in the format <b><i>zg@netforge.loc</i></b> – is the <i>UPS (User Principal Name)</i>.</p> <p align="center"> <img src="http://www.bitrix.net/upload/blog/sntx/216/login_en.png" border="0"/> </p> <p>Login has been successful. But where did the user whose name is now displayed in the <b>Authorization Form</b> component (<i>system.login</i>) come from? We, of course, did not create it.</p> <p align="center"> <img src="http://www.bitrix.net/upload/blog/sntx/7f7/afterlogin_en.png" border="0"/> </p> <p>We enter the site under a built-in administrator user account (it was important to leave the SQL provider untouched) and check the list of site users (<i>~/bitrix/admin/AuthUsersList.aspx</i>). Indeed, there is a new user with a name that coincides with the domain account. So it is clear that it was created automatically after successful authentication by the Active Directory provider.</p> <p align="center"> <img src="http://www.bitrix.net/upload/blog/sntx/0aa/users_en.png" border="0"/> </p> <p>So what advantages have we got here? The source code requires no changes and will work normally after membership provider change. A call to <b><i>BXIdentity.User</i></b> property will return an instance of <b><i>BXUser</i></b> as before.</p> <p>&#39;Savvy&#39;, a reader asks: &#39;What if I want handle user names in the form <b><i>DOMAIN\user</i></b>, that is, in <i>SAM (Security Account Manager)</i> format?&#39; By default, the Active Directory provider works with names in the<i> UPN (User Principal Name)</i> format. To use <i>SAM</i> format, simply add the <b><i>attributeMapUserName</i></b> attribute in the provider definition tag with the value <b><i>SAMAccountName</i></b>. our case, you can then enter the system under the name <b><i>NETFORGE\zg</i></b>.</p> <p>There’s one last question: how to authenticate users from several domains? Do you already know the answer? Probably so – you simply add the needed providers as in our example. But remember that receiving a response from an Active Directory provider takes a certain amount of time. If the provider which confirms the identity of the user is at the end of a long list of Active Directory providers, the authentication process will be noticeably long. Of course, this is true only for the first login – afterward the binding to the provider will be saved.</p> <p>So that’s all. Now we know how to authenticate users through Active Directory. In this article the only thing left is the issue of authentication by role. The site features user roles, but does not know anything about Active Directory groups. I intend to address this topic in one of the next articles.</p> <p>Was the time spent reading this article well-spent? In any case, please leave commentary and ask questions. I’ll be happy to get feedback. </p> <p>Topic links: </p> <ol>  <li><!--noindex--><a href="http://ru.wikipedia.org/wiki/LDAP" rel="nofollow">LDAP</a><!--/noindex--></li>

 <li><!--noindex--><a href="http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx" rel="nofollow">ActiveDirectoryMembershipProvider Class</a><!--/noindex--></li>

 <li><!--noindex--><a href="http://msdn.microsoft.com/en-us/library/ff648345.aspx" rel="nofollow">How To: Use Membership in ASP.NET 2.0</a><!--/noindex--></li>

 <li><!--noindex--><a href="http://msdn.microsoft.com/en-us/library/ms998345.aspx" rel="nofollow">How To: Use Forms Authentication with Active Directory in Multiple Domains</a><!--/noindex--></li>

 <li><!--noindex--><a href="http://msdn.microsoft.com/ru-ru/library/dtkwfdky.aspx" rel="nofollow">Walkthrough: Encrypting Configuration Information Using Protected Configuration</a><!--/noindex--></li>

 </ol>  ]]></content:encoded>
      <dc:creator><![CDATA[Grigoriy Zavodov]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Excellent B2B Cargo Web Application built with .NET Forge CMS]]></title>
      <link>http://www.bitrix.net/blogs/netmaster/44/</link>
      <description><![CDATA[<h3>Company and Implementer</h3> <p>A ground-breaking project on the .NET Forge CMS platform is slated to be launched by long-time Bitrix partner <!--noindex--><a title="GALS Soft" href="https://www.bitrixsoft.com/partners/277242.php" rel="nofollow">GALS Soft</a><!--/noindex--> in August 2011. The project is being developed on order from ground transportation services specializing in oversized shipments and working in the European and Russian markets. The company serves about 200 regular clients and manages a network that includes 7 warehouses and about 500 factories which will be the main users of the system.</p> <h3>Project Goals</h3> <p>The project goal is to create a system which unites a large number of logistics services companies in Europe and Russia. Small companies have an advantageous, individual approach to work with clients, but at the same time they can be united to solve organizational issues more effectively and expand their client base. <br/>

</p> ]]></description>
      <category><![CDATA[case study]]></category>
      <category><![CDATA[galssoft]]></category>
      <category><![CDATA[.net forge]]></category>
      <category><![CDATA[web app]]></category>
      <guid isPermaLink="false">urn:bitrix:blog:post:44</guid>
      <pubDate>Mon, 27 Jun 2011 16:35:01 UT</pubDate>
      <content:encoded><![CDATA[<h3>Company and Implementer</h3> <p>A ground-breaking project on the .NET Forge CMS platform is slated to be launched by long-time Bitrix partner <!--noindex--><a title="GALS Soft" href="https://www.bitrixsoft.com/partners/277242.php" rel="nofollow">GALS Soft</a><!--/noindex--> in August 2011. The project is being developed on order from ground transportation services specializing in oversized shipments and working in the European and Russian markets. The company serves about 200 regular clients and manages a network that includes 7 warehouses and about 500 factories which will be the main users of the system.</p> <h3>Project Goals</h3> <p>The project goal is to create a system which unites a large number of logistics services companies in Europe and Russia. Small companies have an advantageous, individual approach to work with clients, but at the same time they can be united to solve organizational issues more effectively and expand their client base. <br/>

</p>   <h3>The Solution</h3> <p><!--noindex--><a title="GALS Soft" href="https://www.bitrixsoft.com/partners/277242.php" rel="nofollow">GALS Soft</a><!--/noindex--> designed and developed a B2B system on the .NET Forge CMS platform. The system manages all the interaction between clients and services providers from the moment of order placement to the confirmation of delivery. The system is accessible to users through a web interface.</p> <p><i>&quot;The basic tasks at hand were to determine the shipping route for a given shipment, including determining what warehouse or warehouses would be involved; optimizing the loading of transport vehicles, monitoring of the shipment&#39;s condition at all points along the route, and management of warehousing logistics, etc. Because of the supreme quality, flexibility and ease of use we&#39;ve decided to built this elaborate project with .NET Forge CMS. We did the right thing because the services offered on this web resource required a lot of custom changes and integration with business-specific solution, and the .NET Forge CMS was easy and fun to work with</i>.&quot; - said <b>Vadim Mityakin, CEO of GALS Soft</b>. <br/>

</p> <p>The resulting system has a payment system integrated with a business process which enables the handling of various phases of the process by the service provider who controls that particular phase. </p> <div> <img src="https://www.bitrixsoft.com/images_en/case_studies/cargo_b2b_scheme_600x353.jpg" alt="Cargo B2B Service" title="Cargo B2B Service" border="0"/>  <br/>

Accessing the Cargo B2B Service Online </div> <p>Each user is provided with a personal area and access to the sections and data which correspond to his or her role in the system. Shipment tracking and other options are provided, as well.</p> <div> <img src="https://www.bitrixsoft.com/images_en/case_studies/cargo_b2b_orders_600x581.gif" alt="Cargo B2B Service" title="Cargo B2B Service" border="0"/>  <br/>

Example of personal area </div> <div> <img src="https://www.bitrixsoft.com/images_en/case_studies/cargo_b2b_order1_600x792.gif" alt="Cargo B2B Service" title="Cargo B2B Service" border="0"/>  <br/>

Example of personal area </div> <p>Each new order initiates a new business process. When an order is placed, the system determines which of the possible shipping routes will be most efficient with respect to available warehousing and vehicles and formulates an estimated shipping time. The system also monitors the transportation process, creating lists of incoming and outgoing orders for all intermediate storage facilities, accounting for the order as part of the load in all vehicles involved in the shipping process, and ensuring the integrity of the order if the order contains packages originating or shipped by different routes. </p> <div> <img src="https://www.bitrixsoft.com/images_en/case_studies/cargo_b2b_mainp_600x600.gif" alt="Cargo B2B Service" title="Cargo B2B Service" border="0"/>  <br/>

Interface of the web application </div> <p>The implementation is in full swing now, and we wish both the developer&#39;s and the client&#39;s team a smooth and successful start. </p> ]]></content:encoded>
      <dc:creator><![CDATA[Alex Reznor]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Down the Rabbit Hole!]]></title>
      <link>http://www.bitrix.net/blogs/dipyalov/40/</link>
      <description><![CDATA[<p><img src="http://www.bitrix.net/upload/blog/dipyalov/1bf/Untitled-33_3.jpg" alt="Untitled-33" title="Untitled-33" width="163px" height="240px" border="0" align="left" style="background-image: none; border-right-width: 0px; margin: 0px 20px 20px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px"/></p> <p>New technology is always a bit of a black box at first. We can operate the GUI, even write a little code. But it’s very easy to make serious errors in a project if one does not have an understanding of how it works inside or how to use the product’s capabilities the right way. That’s why it’s important to learn the basics of the product architecture.</p> <p>For example, you need to understand how movie clips work and how the scene is built when you’re writing in Adobe Flash. You should know what Activities and Intents are when developing in Android – Google has a great article, describing these basics.</p> <p>So, the main intent of this post is to give developers the fundamentals of the .NET Forge structure and to familiarize them with the core tools the CMS provides and gradually getting deeper down the rabbit hole.</p> ]]></description>
      <guid isPermaLink="false">urn:bitrix:blog:post:40</guid>
      <pubDate>Mon, 27 Jun 2011 09:55:00 UT</pubDate>
      <content:encoded><![CDATA[<p><img src="http://www.bitrix.net/upload/blog/dipyalov/1bf/Untitled-33_3.jpg" alt="Untitled-33" title="Untitled-33" width="163px" height="240px" border="0" align="left" style="background-image: none; border-right-width: 0px; margin: 0px 20px 20px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px"/></p> <p>New technology is always a bit of a black box at first. We can operate the GUI, even write a little code. But it’s very easy to make serious errors in a project if one does not have an understanding of how it works inside or how to use the product’s capabilities the right way. That’s why it’s important to learn the basics of the product architecture.</p> <p>For example, you need to understand how movie clips work and how the scene is built when you’re writing in Adobe Flash. You should know what Activities and Intents are when developing in Android – Google has a great article, describing these basics.</p> <p>So, the main intent of this post is to give developers the fundamentals of the .NET Forge structure and to familiarize them with the core tools the CMS provides and gradually getting deeper down the rabbit hole.</p> <h2>Website Structure</h2> <p>.NET Forge CMS is built on top of Web Forms. It’s not true to say that we totally rely on web forms – many problems were solved with custom solutions, but technically, a website built with .NET Forge CMS is still a Web Forms application. That’s why ASP.NET developers can use their legacy code and easily convert their skills to develop in .NET Forge CMS. We don’t prevent using the standard ASP.NET techniques, but still we propose different, easier and clearer&#160; way to build websites.</p> <p>The site structure is defined by the physical location of files and folders. There are also ways to create a virtual site structure, e. g. to organize a catalog or news feed.</p> <h3>Pages</h3> <p>So the website is made of ASPX-pages, derived from <em>BXPublicPage</em> class(the descendant of <em>System.Web.UI.Page</em>)<em>, </em>which can be overridden (there is an option in the product settings to define the base class for pages newly created through the web interface). </p> <p><em>BXPublicPage</em> performs the following core tasks:</p> <ul> <li>Assigns the correct site template based on the current site settings. This is done in the PreInit phase. </li>

 <li>Provides the API to link CSS- and JavaScript-files. </li>

 <li>Stores the page properties (string values), specific for every page. </li>

 <li>Performs anti-CSRF token validation. </li>

 <li>Solves different infrastructure problems, e. g. setting the correct “action” attribute to the “form” tag. </li>

 </ul> <table class="blog-quote"><tr><th>Quote</th></tr><tr><td> <p>All page content should be placed inside the content areas (&lt;asp:Content&gt;). This is required because the page is displayed within the site template (master page).</p> </td></tr></table> <h3>Site templates</h3> <p>A site template is a MASTER-page (in Web Forms terms) and all the required resources (stylesheets, scripts, images etc.). All site templates are located in separate folders inside the <em>~/bitrix/templates/ </em>folder. The master page must be named as <em>template.master.</em> There are also files which have special meaning for the template:&#160; template_styles.css and styles.css – both files are included in every page automatically. The first file is the main CSS stylesheet of the template. The <em>styles.css</em> file is also included in the WYSIWYG-editor and contains styles, which can be used to decorate the text – it should contain styles that are meaningful for the content editors. </p> <p>The site template master page should be derived from <em>BXMasterPage</em> and contain one required control: &lt;bx:TemplateRequisite&gt;. <em>TemplateRequisite</em> is a special control, which provides infrastructure for the core services to access the page. It is in charge of rendering the top administrative panel on the page, linking the required scripts and controls. <em>TemplateRequisite</em> must be the first control on the form. The top panel can be detached from the form and placed separately with the help of &lt;bx:BXHermitageFrontEndPanel&gt; control. It will be created automatically by the <em>TemplateRequisite</em> in case you don’t declare it yourself. </p> <table class="blog-quote"><tr><th>Quote</th></tr><tr><td> <p>It just happens, that Web Forms allow only one server form. .NET Forge requires this server form to be on every page and the <em>TemplateRequisite </em>to be placed inside (so we define the form in the master page). We are constantly improving the product and reducing the CMS’s dependence on Web Forms. For example, the top panel (<em>BXHermitageFrontEndPanel</em>) now can work outside the form, making the template layout simpler.</p> </td></tr></table> <h3>Sites</h3> <p>Actually, this term has already been mentioned above in the text. <em>Site</em> in the scope of .NET Forge is a separate business layer entity. This entity is defined when any public page code executes. The current site from the defined list is determined by the <strong>current host name</strong> and the <strong>current executing file path</strong>. Other business entities can be linked to one site or another, e.g. information blocks, blogs, forums. The current site can be identified by the call to <em>BXSite.Current.</em></p> <p>The current site template is determined by the current site settings and can be set up through the web interface.</p> <h2>Components</h2> <p>A component, in terms of .NET Forge, is a separate block on the page,&#160; performing some business task. Technically, a component is an ASP.NET user control. All components are placed in the&#160; <em>~/bitrix/components/</em> folder, followed by grouping folder (namespace folder), where each component lies in separate folder, e. g. <em>~/bitrix/components/bitrix/news.list/</em>, where <em>bitrix</em> (the second one in the path) is the namespace and <em>news.list</em> is the component folder. All the components in the <em>bitrix</em> namespace are supported by our company and must not be modified – you will lose your changes while updating the product to a newer version. You can copy the component to your own namespace, modify it and use it as the default (updates will be accessible in the <em>bitrix</em> namespace).</p> <p>In fact, component names consist of the namespace folder and the component folder names, e. g. <em>bitrix:iblock.element.webform</em>, where <em>bitrix</em> is the namespace and <em>iblock.element.webform</em> is the component folder name.</p> <p>A component performs business logic – it processes input and prepares the resulting data. All the logic is concentrated in the <em>component.ascx </em>file. In spite of the fact, that this is technically a user control, it doesn’t output anything. Components are declared as ASCX controls only because this is the simplest way to create a dynamically compiled object with native source code editing support by Visual Studio.</p> <table class="blog-quote"><tr><th>Quote</th></tr><tr><td> <p>A good habit is to set the proper names to component and template classes. In our components we place the classes in the &lt;<em>CompanyName&gt;.&lt;ModuleName&gt;.Components</em> namespace and name the component and template classes <em>&lt;ComponentName&gt;Component</em> and<em> &lt;ComponentName&gt;Template</em> correspondingly. </p> <p>Taking the <em>bitrix:iblock.element.webform</em> component as example, we’ll get the <em>IBlockElementWebformComponent</em> and <em>IBlockElementWebformTemplate</em> classes in the <em>Bitrix.IBlock.Components</em> namespace.</p> </td></tr></table> <h3>Component templates</h3> <p>Components don’t render output – they process and prepare data. To form the HTML, component attaches template. A template is a simple ASCX file, derived from <em>BXComponentTemplate.</em> Component chooses a template from the various templates available depending on it’s settings and the template file location. The template file is named <em>template.ascx</em> and can be located in the following places:</p> <ul> <li>In the component folder (<em>~/bitrix/components/&lt;component_namespace&gt;/&lt;component_name_folder&gt;/templates/&lt;template_name&gt;/</em>). These templates are called <strong>system templates</strong>. You should not place custom templates for the standard components here because they can be rewritten by the update system. </li>

 <li>In the site template folder (<em>~/bitrix/templates/&lt;site_template_name&gt;/components/&lt;component_namespace&gt;/&lt;component_folder&gt;/&lt;template_name&gt;/</em>) </li>

 <li>In the composite component template folder (<em>%template_folder_path%/&lt;component_namespace&gt;/&lt;component_folder&gt;/&lt;template_name&gt;/</em>) </li>

 </ul> <p>As with site templates, component templates can contain files that are automatically included in the page. These are <em>style.css</em> and <em>script.js </em>for CSS and JavaScript correspondingly.</p> <h3>Component parameters</h3> <p><img src="http://www.bitrix.net/upload/blog/dipyalov/d39/image_3.png" alt="image" title="image" width="544px" height="397px" border="0" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px"/></p> <p>Components may have parameters, which are editable through the web interface. The parameters are defined by overriding the <em>PreLoadComponentDefinition</em> and <em>LoadComponentDefinition</em> methods<em>. </em>All parameters with their default values are declared inside<em>&#160;</em>&#160;<em>PreLoadComponentDefinition</em> – this method is called each time the component executes. You can provide an extended description, like a set of predefined values in the <em>LoadComponentDefinition</em> override. These operations can be heavily loaded and connected with database queries – that’s why this method is only called when you open the component setup GUI.</p> <h3>Composite components</h3> <p>A composite component is a component whose templates contain other components. Composite component templates may contain multiple ASCX files, e.g. <em>index.ascx</em>, <em>items.ascx</em>, <em>edit.ascx </em>etc. Those files are called composite component template pages. In this case the composite component does no serious processing – its task is to <strong>choose the right template page and set up the parameters for the components on this page</strong> depending on the current request context.<strong> </strong></p> <p>So, a composite component is a kind of <strong>controller</strong>,<strong> </strong>and its template pages are <strong>views</strong> that are switched by the component. A composite component is usually the only component on the page and provides the functionality of a whole section of the site.</p> <p>Composite component parameters are automatically assigned to its nested components.</p> <h3>Why components?</h3> <p>It may seem that components add significant overhead and complexity to the development process. This is only partly true. I’ll describe&#160; what benefits you’ll get using the component model:</p> <ol> <li>Components create a standard – this means, that they are easy to transfer between projects and between people. Components are can be easily packaged into modules. </li>

 <li>Components are easy to configure through the web interface. </li>

 <li>Components are supported by the site administration GUI (“Amber” interface, WYSIWYG editor) </li>

 <li>Components are reusable – no need to duplicate logic for another task – customizing the template is usually enough. </li>

 <li>Components are easy to support&#160; - your client can do the task without your involvement, thus reducing the cost of support.&#160; </li>

 </ol> <p>Event if you just need to output simple dynamic information it is better to wrap it in a component without parameters and logic – it will be correctly displayed in the WYSIWYG editor as a separate block, thus making the page structure more consistent.</p> <h2>Development levels (“down the hole”)</h2> <p>Wrapping up this lengthy post, .NET Forge offers the following 4-level site development model (separated by the complexity of work to be done):</p> <ol> <li>Site pages – this is where we place and set up our components and content </li>

 <li>Site and component templates – here we make an HTML layout, almost no code required </li>

 <li>Components – written, when we require custom business logic on our site </li>

 <li>Modules, DLL assemblies – this is the lowest (deepest) development level, where we create APIs to use in components, using the .NET Forge core API. I would require more than one post to describe this functionality. </li>

 </ol>]]></content:encoded>
      <dc:creator><![CDATA[Dmitry Pyalov [Дмитрий Пялов]]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[New version 6.0.5]]></title>
      <link>http://www.bitrix.net/blogs/netforge/43/</link>
      <description><![CDATA[We just finished our work on update 6.0.5. It contains fixes for System Core, Infoblock and Blog modules and some interface improvements. <br/>

What we&#39;ve done: <br/>

<ul> <li>Ratings ( Core module ) : logic of counters fixed</li>

 <li>Ratings ( Blog module ) : the &quot;BloggingActivity&quot; component logic was fixed</li>

 <li>Interface: &quot;Copy component template&quot; dialog is fixed, &quot;undo&quot; feature added for &quot;copy component template&quot; operation.</li>

 <li>Components blog.personal, iblock.hierarchy, news.line, media.gallery, media.player - fixed working of components in cached mode.</li>

 <li>Control AdminUserLink - fixed bug with displaying user without a Display Name.</li>

 <li>&quot;Amber&quot; interface - minor fixes.</li>

 </ul> <br/>

]]></description>
      <guid isPermaLink="false">urn:bitrix:blog:post:43</guid>
      <pubDate>Mon, 27 Jun 2011 05:38:20 UT</pubDate>
      <dc:creator><![CDATA[Alexander Buynyachenko]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[Citycelebrity.ru: A nationwide social network built with Bitrix .NET Forge CMS]]></title>
      <link>http://www.bitrix.net/blogs/netmaster/22/</link>
      <description><![CDATA[Hello Everyone! <br/>

<br/>

As my very first blog post, I&#39;d like to publish a brand new case study on how <b>Bitrix .NET Forge CMS</b> was implemented by <!--noindex--><a href="http://www.bitrixsoft.com/partners/277242.php" rel="nofollow">Galssoft</a><!--/noindex-->, a Bitrix Gold Partner, for developing a nationwide social network for creative and active people. I really liked the project from the very beginning, and now it got really big and successful. <br/>

]]></description>
      <category><![CDATA[.net forge]]></category>
      <category><![CDATA[bitrix]]></category>
      <category><![CDATA[social network]]></category>
      <category><![CDATA[implementation]]></category>
      <category><![CDATA[case study]]></category>
      <guid isPermaLink="false">urn:bitrix:blog:post:22</guid>
      <pubDate>Thu, 16 Jun 2011 11:48:37 UT</pubDate>
      <content:encoded><![CDATA[Hello Everyone! <br/>

<br/>

As my very first blog post, I&#39;d like to publish a brand new case study on how <b>Bitrix .NET Forge CMS</b> was implemented by <!--noindex--><a href="http://www.bitrixsoft.com/partners/277242.php" rel="nofollow">Galssoft</a><!--/noindex-->, a Bitrix Gold Partner, for developing a nationwide social network for creative and active people. I really liked the project from the very beginning, and now it got really big and successful. <br/>

<p><b><img src="https://www.bitrixsoft.com/images_en/case_studies/copy_logo_295x82.gif" alt="COPY &amp; COPY Logo" title="COPY &amp; COPY" hspace="5" vspace="2" border="0" align="right"/>Company Profile</b>  <br/>

<!--noindex--><a title="COPY &amp; COPY" href="http://www.copyandcopy.ru/" rel="nofollow">COPY &amp; COPY</a><!--/noindex-->, the first Russian copyright bureau. COPY &amp; COPY was founded in 2002 as the first Russian copyright bureau. Today, COPY &amp; COPY offers services in the sphere of product development – both as it concerns new products and re-branding or repositioning of existing products and services. Project objective.</p> <div> <img src="https://www.bitrixsoft.com/images_en/case_studies/cc_mainpage_600x450.jpg" alt="Citycelebrity.Ru" title="Citycelebrity.Ru" border="0"/>  <br/>

The main page of the Citycelebrity.Ru portal </div> <h3>Project Goals</h3> <p><em>CITYCELEBRITY</em> is a nationwide network for active and creative people – from artists to entrepreneurs, scientists to artisans. It is a communications platform where future stars can promote themselves and their activities in the context of their own city. <!--noindex--><a title="Citycelebrity.ru" href="http://citycelebrity.ru/" rel="nofollow">Citycelebrity.ru</a><!--/noindex--> is a network of city portals for famous people, and those who want to become famous. Specific goals:</p> <ul>  <li>give users a tool for self-promotion and for the demonstration of their potential and accomplishments;</li>

 <li>attract people and entities which could use their services or otherwise be interested in them: galleries, museums, institutes, foundations, advertisers, governmental organizations, as well as partners and other creative people;</li>

 <li>provide convenient and effective communications between users and exchange of opinions and experience among collaborators.</li>

 </ul> <h3>The Solution</h3> <p><!--noindex--><a title="Citycelebrity.ru" href="http://citycelebrity.ru/" rel="nofollow">Citycelebrity.ru</a><!--/noindex--> is a portal which automatically generates for any city in Russia with a population of more than 300,000 people, with plans to move to the level of 100,000. The portal begins working as soon as the first user registers. All residents of Russia can become members by choosing the city nearest to them from the list. </p> <div> <img src="https://www.bitrixsoft.com/images_en/case_studies/cc_overview_600x807.gif" alt="Citycelebrity.Ru" title="Citycelebrity.Ru" border="0"/>  <br/>

Elements and sections displayed on the Citycelebrity.Ru portal </div> <p>The community created by the portal is a social network. The portal structure is organized in a system of posts of various types: article, event, master class, photo gallery, video presentation, or tele-conference. Depending on the type of post, there are various additional fields. When any post is opened on the portal, related posts, selected by topic, section, and title are displayed on the right-hand side of the screen.</p> <p><img src="https://www.bitrixsoft.com/images_en/aspnet/forge_150x185.jpg" alt="Bitrix .NET Forge" title="Bitrix .NET Forge" border="0" align="left"/>  <br/>

The portal is built on the Bitrix .NET Forge CMS platform. An internet resource of this type has a high level of traffic, so high performance capability of the platform was an essential feature. Aside from the social networking functionality, the portal has radio and video broadcasting capabilities, which required special configuration of the server. </p> <p>In development, the platform components which were used were blogs, search, user fields, banners, and advertising areas. Additional services were created in the framework of the product’s unique architecture, allowing uniform processes of development and support. The project is unusual in its orientation to an extremely wide regional audience. Support for the resource is performed by active users and an editing team. Convenience support of user groups is executed via a specially designed administrative interface.</p> <div> <img src="https://www.bitrixsoft.com/images_en/case_studies/cc_register_600x450.gif" alt="Citycelebrity.Ru" title="Citycelebrity.Ru" border="0"/>  <br/>

New User Register form on the Citycelebrity.Ru portal </div> <br/>

<div> <img src="https://www.bitrixsoft.com/images_en/case_studies/cc_usrprofile_600x450.gif" alt="Citycelebrity.Ru" title="Citycelebrity.Ru" border="0"/>  <br/>

Personal User Page / User Profile at Citycelebrity.Ru </div> <h3>The Result</h3> <p>Today, <!--noindex--><a title="Citycelebrity.ru" href="http://citycelebrity.ru/" rel="nofollow">Citycelebrity.ru</a><!--/noindex--> is a completely functional portal serving the Russian market. There are <strong>14385 registered users</strong> and in more than <strong>70 cities</strong>. There are about <strong>100 organization-type users</strong>.</p> <p><!--noindex--><a href="https://www.bitrixsoft.com/partners/277242.php" rel="nofollow">Galssoft</a><!--/noindex--> keeps developing and maintaining the project. It is being dynamically improved, also thanks to the development of new modules and expanded functionality that become available with each new product version of Bitrix .NET Forge CMS.</p> ]]></content:encoded>
      <dc:creator><![CDATA[Alex Reznor]]></dc:creator>
    </item>
    <item>
      <title><![CDATA[New release 6.0.4 is out!]]></title>
      <link>http://www.bitrix.net/blogs/netforge/37/</link>
      <description><![CDATA[We have just released new update 6.0.4, that includes fixes of modules and components. Kernel, Communication Utility, Blog and Infoblock modules were updated. Also, components &quot;news&quot; and &quot;catalogue&quot; were fixed, and we improved &quot;Create Page&quot; and &quot;Edit Page&quot; dialogs. Thanks to all who helped us to found this bugs. <br/>

]]></description>
      <category><![CDATA[update]]></category>
      <category><![CDATA[new version]]></category>
      <guid isPermaLink="false">urn:bitrix:blog:post:37</guid>
      <pubDate>Wed, 15 Jun 2011 10:58:19 UT</pubDate>
      <dc:creator><![CDATA[Alexander Buynyachenko]]></dc:creator>
    </item>
  </channel>
</rss>