# برنامه نویسی با محصولات مایکروسافت > Sharepoint > برنامه نویسی شیرپوینت (Sharepoint Development) >  پیاده سازی تقویم شمسی در شیرپوینت با استفاده از جاوا اسکریپت

## rtech

در مجموعه مقالاتی که خدمت شما ارائه خواهم کرد در مورد پیاده سازی تقویم شمسی با استفاده از امکانات جاوا اسکریپت و Jquery صحبت خواهد شد و به شما آموزش خواهم داد چگونه بدون استفاده از کدهای سمت سرور بتوانید تقویم شمسی را در شیرپوینت مورد استفاده قرار دهید ، این روش ضعف هایی هم دارد ولی به هر حال میتواند کمک زیادی به شما در یادگیری و استفاده از تقویم شمسی داشته باشد .

تغییر تاریخ ها در نمای لیست

در این بخش از مقاله قصد داریم تاریخ هایی که در نمای یک لیست یا کتابخانه اسناد وجود دارد را به شمسی تبدیل نماییم ، در این مثال تقویم سایت را می بایست بر روی تقویم میلادی قرار دهید ، اگر در نمای لیست هایتان ستون هایی از نوع تاریخ داشته باشید ، صفحه ای همچون شکل زیر را مشاهده خواهید نمود :


 همانطور که مشاهده میکنید در این مثال که یک لیست از نوع وظایف را نمایش می دهد دو ستون به نامه های تاریخ شروع و تاریخ انجام وجود دارد که تاریخ های میلادی در این نما کاملا مشخص هستند.

اگر نگاهی به سورس صفحه داشته باشید خواهید دید که هر یک از سطرهای این نما که به صورت جدول ذخیره شده اند دارای TD هایی هستند که مقدار Class آن ها برابر ms-vb2 میباشد .

اگر بخواهیم مقادیر این تاریخ ها رو تغییر دهیم نیاز داریم یک Loop ساده بین تمام تگ های TD این صفحه ایجاد کرده و تاریخ ها رو تشخیص و تغییر دهیم .

برای اینکه این کد قابل دسترسی در تمام لیست ها باشد ، ابتدا شیرپوینت دیزاینر را باز کرده و Master Page پیش فرض سایت را در حالت ویرایش قرار دهید و درست قبل از بسته شدن تگ Body ( مقدار </body> را جستجو کنید ) کد های زیر را وارد نمایید.


<script type="text/javascript">

                   // متغیر های مورد نیاز

                   var Day;

                   var Month;

                   var Year;

                   var pday;

                   var pmonth;

                   var pyear;

                  

                   // الگوی تشخیص مقادیر تاریخ

                   var RegExPattern = "\\d{4}\\/\\d{2}\\/\\d{2}";

                  

                   // دریافت تمام تگ های تی دی در صفحه

                   var tags = document.getElementsByTagName('TD');

                   for (var i = 0; i < tags.length; i++)

                   {

                             // دریافت مقدار کلاس تگ

                             var TdClassName = tags[i].className;

                             // چک کردن مقدار

                             if (TdClassName .indexOf('ms-vb2') != -1)

                             {

                                      // ذخیره مقدار درون تگ

                                      dateValue = tags[i].innerText;                                    

                                      var regx = new RegExp(RegExPattern, "g");

                                      // چک کردن اینکه آیا مقدار درون تگ از نوع تاریخ می باشد یا خیر

                                      if (regx.test(dateValue))

                                      {                 

                                                                            

                                                Year = new Number(dateValue.substring(0, 4));                                        

                                                Month = new Number(dateValue.substring(5, 7));

                                                Day = new Number(dateValue.substring(8, 10));

                                               

                                                // تبدیل تاریخ میلادی به شمسی

                                                var j = gregorian_to_jd(Year,Month,Day);

                                                perscal = jd_to_persian(j);

                                                pyear = perscal[0];

                                                pmonth = perscal[1];

                                                pday = perscal[2];

                                               

                                                if(Number(pmonth) < 10)

                                                          pmonth = "0" + pmonth;

 

                                                if(Number(pday) < 10)

                                                {

                                                          pday = "0" + pday;                                                           

                                                }

                                                // ذخیره مقدار تاریخ شمسی

                                                var shamsiDate = pyear + "/" + pmonth + "/" + pday;

                                               

                                                // جایگذاری مقدار تاریخ میلادی با شمسی

                                                tags[i].innerText = shamsiDate;

                                      }

                                     

                             }

                   }

                  

                   // توابع تبدیل تاریخ

                   var GREGORIAN_EPOCH = 1721425.5;

                   function leap_gregorian(year) {

                             return ((year % 4) == 0) &&

                                                (!(((year % 100) == 0) && ((year % 400) != 0)));

                   }

 

 

                   function gregorian_to_jd(year, month, day) {

                             return (GREGORIAN_EPOCH - 1) +

                                         (365 * (year - 1)) +

                                         Math.floor((year - 1) / 4) +

                                         (-Math.floor((year - 1) / 100)) +

                                         Math.floor((year - 1) / 400) +

                                         Math.floor((((367 * month) - 362) / 12) +

                                         ((month <= 2) ? 0 :

                                                                                         (leap_gregorian(year) ? -1 : -2)

                                         ) +

                                         day);

                   }

 

                   function jd_to_persian(jd)

                   {

                             var year, month, day, depoch, cycle, cyear, ycycle,

                                      aux1, aux2, yday;

 

 

                             jd = Math.floor(jd) + 0.5;

 

                             depoch = jd - persian_to_jd(475, 1, 1);

                             cycle = Math.floor(depoch / 1029983);

                             cyear = mod(depoch, 1029983);

                             if (cyear == 1029982) {

                                      ycycle = 2820;

                             } else {

                                      aux1 = Math.floor(cyear / 366);

                                      aux2 = mod(cyear, 366);

                                      ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) +

                                                                   aux1 + 1;

                             }

                             year = ycycle + (2820 * cycle) + 474;

                             if (year <= 0) {

                                      year--;

                             }

                             yday = (jd - persian_to_jd(year, 1, 1)) + 1;

                             month = (yday <= 186) ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);

                             day = (jd - persian_to_jd(year, month, 1)) + 1;

                             return new Array(year, month, day);

                   }

</script>

همانطور که میدانید در جاوا اسکریپت قابلیت استفاده از regular expression وجود دارد ، ما الگویی را برای تشخیص تاریخ تعریف نمودیم و سپس با استفاده از متد getElementsByTagName مجموعه ای از المنت های TD را در متغیری ذخیره نمودیم . سپس با یک Loop تک به تک تگ ها را چک نمودیم ، برای اینکه کارایی بالاتر رود و تگ های نا مربوط حذف گردند ما یک شرط در اینجا قرار دادیم تا فقط تگ هایی که نام کلاس آن ها ms-vb2 می باشد را مورد بررسی قرار دهد .
سپس مقدار داخلی تگ را در متغیری ذخیره و با متد regx.test چک خواهیم کرد که آیا مقدار تگ از نوع تاریخ است یا خیر ، اگر مقدار از نوع تاریخ باشد با استفاده از توابع تبدیل تاریخ ها ، تاریخ میلادی را به تاریخ شمسی تبدیل و مقدار جدید را جایگزین مقدار قبلی می نماییم .

اگر فایل را ذخیره نمایید و صفحه را مجدد بارگذاری کنید ، تاریخ ها به شکل زیر تغییر خواهند نمود :

به این شکل در اولین گام تاریخ های میلادی در تمام لیست ها و مخازن اسناد شما به تاریخ شمسی تبدیل شدند !
فکر میکنم هیجان زده شده اید برای تغییر قسمت های دیگر ، مثل لیست های از نوع تقویم و یا Date Picker شیرپوینت . برای شروع همین تمرین را انجام دهید ، در قسمت بعدی به  تغییر Date Picker و نحوه ذخیره تاریخ های شمسی خواهیم پرداخت .
امیدوارم که این مقاله برای شما مورد استفاده قرار گرفته باشد .

موفق و پیروز باشید.

رامین احمدی

----------


## mona11

دستتون درد نکنه واقعا...کسی قدر این کدهارو نمیدونه فکر کنم...به هر حال من باید ارادتمو میرسوندم خدمتتون

----------


## mona11

ببینید،مستر پیج دیفالت من رو حالت v4 تنظیم شده،که متاسفانه اصلا این گزینه ی "ms-vb2" رو نداره داخلش...
نه تنها اون نداره،بلکه هیچکدوم از مستر پیج هام همچین چیزی رو ننوشته داخلش(نه minimal  و 
نه default master)

ینی 4-5  ساعت داشتم میگشتم دنبالش

----------


## mona11

از کد جاوا اسکریپتش مطمئنید؟من مستر پیجمو باز کردم و  کد رو قبل از تگ بادی کپی کردم و هیچ اتفاقی رخ نداد...

----------


## rtech

شما نباید به دنبال ms-vb2 بگردید
فایل v4 رو باز کنید به انتهای آن رفته و قبل از خط زیر کدها رو وارد کنید :


</body>

----------


## mona11

نشد هر کار کردم....همچنان میلادی نشون میده.... اینم عکسشUntitled.jpg

<%@Master language="C#‎"%>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %> <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="wssuc" TagName="Welcome" src="~/_controltemplates/Welcome.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="MUISelector" src="~/_controltemplates/MUISelector.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="DesignModeConsole" src="~/_controltemplates/DesignModeConsole.ascx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="<%$Resources:wss,language_value%>" dir="<%$Resources:wss,multipages_direction_dir_val  ue%>" runat="server" xmlns:o="urn:schemas-microsoft-com:office:office" __expr-val-dir="rtl">
<head runat="server">
    <meta http-equiv="X-UA-Compatible" content="IE=8"/>
    <meta name="GENERATOR" content="Microsoft SharePoint"/>
    <meta name="progid" content="SharePoint.WebPartPage.Document"/>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <meta http-equiv="Expires" content="0"/>
    <SharePoint:RobotsMetaTag runat="server"/>
    <title id="onetidTitle"><asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server"/></title>
    <SharePoint:CssLink runat="server" Version="4"/>
    <SharePoint:Theme runat="server"/>
    <SharePoint:ULSClientConfig runat="server"/>
    <script type="text/javascript">
                                PermissionsString="ManageLists"
                                PermissionMode="Any"
                                VisibilityFeatureId="00BFEA71-E717-4E80-AA17-D0C71B360101" />
                            <SharePoint:MenuItemTemplate runat="server" id="MenuItem_CreateSite"
                                Text="<%$Resources:wss,siteactions_createsite%>"
                                Description="<%$Resources:wss,siteactions_createsi  tedesc%>"
                                ImageUrl="/_layouts/images/newweb32.png"
                                MenuGroupId="200"
                                Sequence="230"
                                UseShortId="true"
                                ClientOnClickScriptContainingPrefixedUrl="if (LaunchCreateHandler('Site')) { STSNavigate('~site/_layouts/newsbweb.aspx') }"
            </div>
                          </Template_Controls>
                        </SharePoint:DelegateControl>
                      </div>
                    </Sharepoint:SPNavigationManager>
                </ContentTemplate>
            </SharePoint:UIVersionedContent>
            <Sharepoint:UIVersionedContent runat="server" UIVersion="4">
                <ContentTemplate>
                    <Sharepoint:SPNavigationManager
                    id="TreeViewNavigationManagerV4"
                    runat="server"
                    ContainedControl="TreeView"
                    CssClass="s4-treeView"
                    >
                      <SharePoint:SPLinkButton runat="server" NavigateUrl="~site/_layouts/viewlsts.aspx" id="idNavLinkSiteHierarchyV4" Text="<%$Resources:wss,treeview_header%>" accesskey="<%$Resources:wss,quiklnch_allcontent_AK  %>" CssClass="s4-qlheader" />
                          <div class="ms-treeviewouter">
                            <SharePoint:DelegateControl runat="server" ControlId="TreeViewAndDataSource">
                              <Template_Controls>
                                <SharePoint:SPHierarchyDataSourceControl
                                 runat="server"
                                 id="TreeViewDataSourceV4"
                                 RootContextObject="Web"
                                 IncludeDiscussionFolders="true"
                                />
                                <SharePoint:SPRememberScroll runat="server" id="TreeViewRememberScrollV4" onscroll="javascript**:_spRecordScrollPositions(this  );" style="overflow: auto;height: 400px;width: 155px; ">
                                  <Sharepoint:SPTreeView
                                    id="WebTreeViewV4"
                                    runat="server"
                                    ShowLines="false"
                                    DataSourceId="TreeViewDataSourceV4"
                                    ExpandDepth="0"
                                    SelectedNodeStyle-CssClass="ms-tvselected"
                                    NodeStyle-CssClass="ms-navitem"
                                    SkipLinkText=""
                                    NodeIndent="12"
                                    ExpandImageUrl="/_layouts/images/tvclosed.png"
                                    ExpandImageUrlRtl="/_layouts/images/tvclosedrtl.png"
                                    CollapseImageUrl="/_layouts/images/tvopen.png"
                                    CollapseImageUrlRtl="/_layouts/images/tvopenrtl.png"
                                    NoExpandImageUrl="/_layouts/images/tvblank.gif"
                                  >
                                  </Sharepoint:SPTreeView>
                                </Sharepoint:SPRememberScroll>
                              </Template_Controls>
                            </SharePoint:DelegateControl>
                          </div>
                    </Sharepoint:SPNavigationManager>
                </ContentTemplate>
            </SharePoint:UIVersionedContent>
                <asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" runat="server">
                <SharePoint:UIVersionedContent UIVersion="3" runat="server" id="PlaceHolderQuickLaunchBottomV3">
                    <ContentTemplate>
                        <table width="100%" cellpadding="0" cellspacing="0" border="0" class="s4-die">
                        <tbody>
                        <tr><td>
                        <table class="ms-recyclebin" width="100%" cellpadding="0" cellspacing="0" border="0">
                        <tbody>
                        <tr><td nowrap="nowrap">
                        <SharePoint:SPLinkButton runat="server" NavigateUrl="~site/_layouts/recyclebin.aspx" id="v3idNavLinkRecycleBin" ImageUrl="/_layouts/images/recycbin.gif" Text="<%$Resources:wss,StsDefault_RecycleBin%>" PermissionsString="DeleteListItems" />
                        </td></tr>
                        </table>
                        </td></tr>
                        </table>
                    </ContentTemplate>
                </SharePoint:UIVersionedContent>
                <SharePoint:UIVersionedContent UIVersion="4" runat="server" id="PlaceHolderQuickLaunchBottomV4">
                    <ContentTemplate>
                        <ul class="s4-specialNavLinkList">
                            <li>
                                <SharePoint:ClusteredSPLinkButton
                                    runat="server"
                                    NavigateUrl="~site/_layouts/recyclebin.aspx"
                                    ImageClass="s4-specialNavIcon"
                                    ImageUrl="/_layouts/images/fgimg.png"
                                    ImageWidth=16
                                    ImageHeight=16
                                    OffsetX=0
                                    OffsetY=428
                                    id="idNavLinkRecycleBin"
                                    Text="<%$Resources:wss,StsDefault_RecycleBin%>"
                                    CssClass="s4-rcycl"
                                    PermissionsString="DeleteListItems" />
                            </li>
                            <li>
                                <SharePoint:ClusteredSPLinkButton
                                    id="idNavLinkViewAllV4"
                                    runat="server"
                                    PermissionsString="ViewFormPages"
                                    NavigateUrl="~site/_layouts/viewlsts.aspx"
                                    ImageClass="s4-specialNavIcon"
                                    ImageUrl="/_layouts/images/fgimg.png"
                                    ImageWidth=16
                                    ImageHeight=16
                                    OffsetX=0
                                    OffsetY=0
                                    Text="<%$Resources:wss,quiklnch_allcontent_short%>  "
                                    accesskey="<%$Resources:wss,quiklnch_allcontent_AK  %>"/>
                            </li>
                        </ul>
                    </ContentTemplate>
                </SharePoint:UIVersionedContent>
                </asp:ContentPlaceHolder>
                </div>
                </div>
                        </asp:ContentPlaceHolder>
                    </div>
                </div>
                <div class="s4-ca s4-ca-dlgNoRibbon" id="MSO_ContentTable">
                    <div class="s4-die">
                        <asp:ContentPlaceHolder id="PlaceHolderPageImage" runat="server" Visible="false"/>
                        <asp:ContentPlaceHolder id="PlaceHolderTitleLeftBorder" runat="server" Visible="false">
                        </asp:ContentPlaceHolder>
                            <div id="onetidPageTitleAreaFrame" class='ms-pagetitleareaframe s4-pagetitle'></div>
                        <asp:ContentPlaceHolder id="PlaceHolderMiniConsole" runat="server" Visible="false"/>
                        <span class="s4-die">
                            <asp:ContentPlaceHolder id="PlaceHolderTitleRightMargin" runat="server" Visible="false"/>
                        </span>
                        <asp:ContentPlaceHolder id="PlaceHolderTitleAreaSeparator" runat="server" Visible="false"/>
                            <asp:ContentPlaceHolder id="PlaceHolderNavSpacer" runat="server" Visible="false"><img src="/_layouts/images/blank.gif" width='138' height='1' alt="" /></asp:ContentPlaceholder>
                        <asp:ContentPlaceHolder id="PlaceHolderLeftNavBarBorder" runat="server" Visible="false"></asp:ContentPlaceHolder>
                        <asp:ContentPlaceHolder id="PlaceHolderBodyLeftBorder" runat="server" Visible="false">
                        </asp:ContentPlaceHolder>
                    </div>
                    <SharePoint:VersionedPlaceHolder UIVersion="3" ID="DesignModeConsoleV3" runat="server">
                        <asp:ContentPlaceHolder id="WSSDesignConsole" runat="server">
                            <wssuc:DesignModeConsole id="IdDesignModeConsole" runat="server" />
                        </asp:ContentPlaceHolder>
                    </SharePoint:VersionedPlaceHolder>
                        <div class='s4-ba'><div class='ms-bodyareacell'>
                            <div id="MSO_ContentDiv" runat="server">
                        <a name="mainContent"></a>
                        <asp:ContentPlaceHolder id="PlaceHolderMain" runat="server">
                        </asp:ContentPlaceHolder>
                            </div>
                        </div></div>
                    <div class="s4-die">
                        <asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server">
                        </asp:ContentPlaceHolder>
                    </div>
                </div>
            </div>
            <SharePoint:DeveloperDashboard runat="server"/>
        </div>
</div>
  <asp:ContentPlaceHolder id="PlaceHolderFormDigest" runat="server">
        <SharePoint:FormDigest runat="server"/>
  </asp:ContentPlaceHolder>
   <input type="text" name="__spText1" title="text" style="display:none;" />
   <input type="text" name="__spText2" title="text" style="display:none;" />
  </form>
  <asp:ContentPlaceHolder id="PlaceHolderUtilityContent" runat="server"/>
    <SharePoint:WarnOnUnsupportedBrowsers runat="server"/>
        <script type="text/javascript">
 
                   // متغیر های مورد نیاز
 
                   var Day;
 
                   var Month;
 
                   var Year;
 
                   var pday;
 
                   var pmonth;
 
                   var pyear;
 
                   
 
                   // الگوی تشخیص مقادیر تاریخ
 
                   var RegExPattern = "\\d{4}\\/\\d{2}\\/\\d{2}";
 
                   
 
                   // دریافت تمام تگ های تی دی در صفحه
 
                   var tags = document.getElementsByTagName('TD');
 
                   for (var i = 0; i < tags.length; i++)
 
                   {
 
                             // دریافت مقدار کلاس تگ
 
                             var TdClassName = tags[i].className;
 
                             // چک کردن مقدار
 
                             if (TdClassName .indexOf('ms-vb2') != -1)
 
                             {
 
                                      // ذخیره مقدار درون تگ
 
                                      dateValue = tags[i].innerText;                                   
 
                                      var regx = new RegExp(RegExPattern, "g");
 
                                      // چک کردن اینکه آیا مقدار درون تگ از نوع تاریخ می باشد یا خیر
 
                                      if (regx.test(dateValue))
 
                                      {                
 
                                                                             
 
                                                Year = new Number(dateValue.substring(0, 4));                                       
 
                                                Month = new Number(dateValue.substring(5, 7));
 
                                                Day = new Number(dateValue.substring(8, 10));
 
                                                
 
                                                // تبدیل تاریخ میلادی به شمسی
 
                                                var j = gregorian_to_jd(Year,Month,Day);
 
                                                perscal = jd_to_persian(j);
 
                                                pyear = perscal[0];
 
                                                pmonth = perscal[1];
 
                                                pday = perscal[2];
 
                                                
 
                                                if(Number(pmonth) < 10)
 
                                                          pmonth = "0" + pmonth;
 
  
 
                                                if(Number(pday) < 10)
 
                                                {
 
                                                          pday = "0" + pday;                                                          
 
                                                }
 
                                                // ذخیره مقدار تاریخ شمسی
 
                                                var shamsiDate = pyear + "/" + pmonth + "/" + pday;
 
                                                
 
                                                // جایگذاری مقدار تاریخ میلادی با شمسی
 
                                                tags[i].innerText = shamsiDate;
 
                                      }
 
                                      
 
                             }
 
                   }
 
                   
 
                   // توابع تبدیل تاریخ
 
                   var GREGORIAN_EPOCH = 1721425.5;
 
                   function leap_gregorian(year) {
 
                             return ((year % 4) == 0) &&
 
                                                (!(((year % 100) == 0) && ((year % 400) != 0)));
 
                   }
 
  
 
  
 
                   function gregorian_to_jd(year, month, day) {
 
                             return (GREGORIAN_EPOCH - 1) +
 
                                         (365 * (year - 1)) +
 
                                         Math.floor((year - 1) / 4) +
 
                                         (-Math.floor((year - 1) / 100)) +
 
                                         Math.floor((year - 1) / 400) +
 
                                         Math.floor((((367 * month) - 362) / 12) +
 
                                         ((month <= 2) ? 0 :
 
                                                                                         (leap_gregorian(year) ? -1 : -2)
 
                                         ) +
 
                                         day);
 
                   }
 
  
 
                   function jd_to_persian(jd)
 
                   {
 
                             var year, month, day, depoch, cycle, cyear, ycycle,
 
                                      aux1, aux2, yday;
 
  
 
  
 
                             jd = Math.floor(jd) + 0.5;
 
  
 
                             depoch = jd - persian_to_jd(475, 1, 1);
 
                             cycle = Math.floor(depoch / 1029983);
 
                             cyear = mod(depoch, 1029983);
 
                             if (cyear == 1029982) {
 
                                      ycycle = 2820;
 
                             } else {
 
                                      aux1 = Math.floor(cyear / 366);
 
                                      aux2 = mod(cyear, 366);
 
                                      ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) +
 
                                                                   aux1 + 1;
 
                             }
 
                             year = ycycle + (2820 * cycle) + 474;
 
                             if (year <= 0) {
 
                                      year--;
 
                             }
 
                             yday = (jd - persian_to_jd(year, 1, 1)) + 1;
 
                             month = (yday <= 186) ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);
 
                             day = (jd - persian_to_jd(year, month, 1)) + 1;
 
                             return new Array(year, month, day);
 
                   }
 
</script>
</body>

</html>

----------


## rtech

در مرورگرهای غیر از فایرفاکس چک کنید مثل اینترنت اکسپلورر یا کروم

----------


## mona11

با اکسپلورر چک کردم...ولی جواب نداد....میدونید : مقتی مینویسم مثلا (به صفحه خوش آمدید )alert ،درست جواب میده...یعنی پیغامو نمایش میده ولی این کده کار نمیکنه...نمدونم چرا؟؟؟؟خودمم موندم

----------


## rtech

کد innerText  در فایرفاکس کار نمیکنه و باید بجاش از textContent استفاده کرد ، من کد نهایی رو که در فایرفاکس هم جواب میده اینجا میزارم تست کنید :

<script type="text/javascript">

		// متغیر های مورد نیاز
		var Day;
		var Month;
		var Year;
		var pday;
		var pmonth;
		var pyear;
		
		// الگوی تشخیص مقادیر تاریخ
		var RegExPattern = "\\d{4}\\/\\d{2}\\/\\d{2}";
		
		// دریافت تمام تگ های تی دی در صفحه
		var tags = document.getElementsByTagName('TD');
		for (var i = 0; i < tags.length; i++) 
		{ 
			// دریافت مقدار کلاس تگ
			var TdClassName = tags[i].className;

			// چک کردن مقدار
			if (TdClassName .indexOf('ms-vb2') != -1)
			{
				// ذخیره مقدار درون تگ
				if(document.all){
					dateValue = tags[i].innerText;	
				} else{
					dateValue = tags[i].textContent;
				}
							
				var regx = new RegExp(RegExPattern, "g");

				// چک کردن اینکه آیا مقدار درون تگ از نوع تاریخ می باشد یا خیر
				if (regx.test(dateValue)) 
				{		
								
					Year = new Number(dateValue.substring(0, 4));					
					Month = new Number(dateValue.substring(5, 7));
					Day = new Number(dateValue.substring(8, 10));
					
					// تبدیل تاریخ میلادی به شمسی
					var j = gregorian_to_jd(Year,Month,Day);
					perscal = jd_to_persian(j);
					pyear = perscal[0];
					pmonth = perscal[1];
					pday = perscal[2];
					
					if(Number(pmonth) < 10)
						pmonth = "0" + pmonth;

					if(Number(pday) < 10)
					{
						pday = "0" + pday;							
					}
					// ذخیره مقدار تاریخ شمسی
					var shamsiDate = pyear + "/" + pmonth + "/" + pday;
					
					// جایگذاری مقدار تاریخ میلادی با شمسی
					if(document.all){
						tags[i].innerText = shamsiDate;
					} else{
						tags[i].textContent = shamsiDate;
					}
					
				}
				
			}
		}
		changeDatePickerToPersian();
		// تغییر پیکر تاریخ
		function changeDatePickerToPersian()
		{
			$(function() {
				var tags = document.getElementsByTagName('IMG');
				for (var i = 0; i < tags.length; i++) 
				{ 
					 var tempString = tags[i].id;
					 if (tempString.indexOf('DatePickerImage') != -1){
					 document.getElementById(tempString).style.display = 'none';
					 var dtcontrolId = tempString.replace('DatePickerImage','');
					 var DateValue = document.getElementById(dtcontrolId).value;
					 if(DateValue)
					 {						
						Year = new Number(DateValue.substring(0, 4));					
						Month = new Number(DateValue.substring(5, 7));
						Day = new Number(DateValue.substring(8, 10));
						if(Year > 2000)
						{
							// تبدیل تاریخ میلادی به شمسی
							var j = gregorian_to_jd(Year,Month,Day);
							perscal = jd_to_persian(j);
							pyear = perscal[0];
							pmonth = perscal[1];
							pday = perscal[2];
							
							if(Number(pmonth) < 10)
								pmonth = "0" + pmonth;

							if(Number(pday) < 10)
							{
								pday = "0" + pday;							
							}
							// ذخیره مقدار تاریخ شمسی
							var shamsiDate = pyear + "/" + pmonth + "/" + pday;
							
							// جایگذاری مقدار تاریخ میلادی با شمسی
							document.getElementById(dtcontrolId).value = shamsiDate;
						}
					 }
					 $("#" + dtcontrolId).datepicker({showOn: 'button',buttonImage: '/_layouts/images/calendar.gif',buttonImageOnly: true});
					 }
				}
			});
		
		}
		// توابع تبدیل تاریخ
		var GREGORIAN_EPOCH = 1721425.5;
		function leap_gregorian(year) {
			return ((year % 4) == 0) &&
					(!(((year % 100) == 0) && ((year % 400) != 0)));
		}


		function gregorian_to_jd(year, month, day) {
			return (GREGORIAN_EPOCH - 1) +
				   (365 * (year - 1)) +
				   Math.floor((year - 1) / 4) +
				   (-Math.floor((year - 1) / 100)) +
				   Math.floor((year - 1) / 400) +
				   Math.floor((((367 * month) - 362) / 12) +
				   ((month <= 2) ? 0 :
									   (leap_gregorian(year) ? -1 : -2)
				   ) +
				   day);
		}

		function jd_to_persian(jd)
		{
			var year, month, day, depoch, cycle, cyear, ycycle,
				aux1, aux2, yday;


			jd = Math.floor(jd) + 0.5;

			depoch = jd - persian_to_jd(475, 1, 1);
			cycle = Math.floor(depoch / 1029983);
			cyear = mod(depoch, 1029983);
			if (cyear == 1029982) {
				ycycle = 2820;
			} else {
				aux1 = Math.floor(cyear / 366);
				aux2 = mod(cyear, 366);
				ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) +
							aux1 + 1;
			}
			year = ycycle + (2820 * cycle) + 474;
			if (year <= 0) {
				year--;
			}
			yday = (jd - persian_to_jd(year, 1, 1)) + 1;
			month = (yday <= 186) ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);
			day = (jd - persian_to_jd(year, month, 1)) + 1;
			return new Array(year, month, day);
		}
		
		
		
</script>

----------


## mona11

نشد که نشد :( ...دستتون درد نکنه تا این موقع شب کمک کردید...یه برنامه نویس خوب هیچوقت خسته نمیشه :)...فردا درستش میکنم :)

----------


## rtech

رو چند سرور این کد تست شده و جواب داده احتمالا یه جای کار رو اشتباه انجام میدید ، مطمئنا میتونید درستش کنید
موفق باشید

----------


## mona11

یه نکته ای: این کد شما هیچوقت وارد IF دوم نمیشه...

if (TdClassName .indexOf('ms-vb2') != -1)
            {
                // ذخیره مقدار درون تگ
                alert("s111");
                                   dateValue = tags[i].textContent;
                
                             
                var regx = new RegExp(RegExPattern, "g");
 
                // چک کردن اینکه آیا مقدار درون تگ از نوع تاریخ می باشد یا خیر
                if (regx.test(dateValue))
                {      
                              alert("s22222");   
                    Year = new Number(dateValue.substring(0, 4));                  
                    Month = new Number(dateValue.substring(5, 7));
                    Day = new Number(dateValue.substring(8, 10));
                     
                    // تبدیل تاریخ میلادی به شمسی
                    var j = gregorian_to_jd(Year,Month,Day);
                    perscal = jd_to_persian(j);
                    pyear = perscal[0];
                    pmonth = perscal[1];
                    pday = perscal[2];
                     
                    if(Number(pmonth) < 10)
                        pmonth = "0" + pmonth;
 
                    if(Number(pday) < 10)
                    {
                        pday = "0" + pday;                         
                    }
                    // ذخیره مقدار تاریخ شمسی
                    var shamsiDate = pyear + "/" + pmonth + "/" + pday;
                     
                    // جایگذاری مقدار تاریخ میلادی با شمسی
                    alert("s33333");
                                            tags[i].textContent= shamsiDate;
                    
                     
                }
                 
            }
        }



اصلا هیچوقت فرمم موقع لود شدن ،آلِرت 2222 نمیده...فقط 4 بار حلقه ی for اجرا میشه،و 4 بار هم آلرت 1111 میده و تمام....دیگه هیچ آلرتی نمیده....این در صورتیه که من دو تا تاریخ دارم توی لیستم...

----------


## mona11

در واقع مقدار   ((regx.test(dateValue) هیچوقت true نمیشه :)

----------


## feri10

دستتون درد نکنه بابت مطلب مفیدتون.
من هم دقیقا مشکل mona11 را دارم کدها را کپی و اجرا کردم ولی هیچ اتفاقی نیافتاد. اگر آقای احمدی عزیز لطف کنید کمک کنید ممنون میشم خیلی ضروریه در ضمن من از اکسپلورر فقط استفاده می کنم.

----------


## feri10

آقای احمدی کد را که دیباگ می کردم اصلا هیچ تاریخی را پیدا نمی کرد چون قالبتون اشتباه بود تو این خط:
var RegExPattern = "\\d{4}\\/\\d{2}\\/\\d{2}";
که باید به صورت 
var RegExPattern = "\\d{2}\\/\\d{2}\\/\\d{4}"; می نوشتید.
ولی باز مشکل داره لطفا یک چک کلی بکنید کد را. محبت می کنید.
ممنون.

----------


## mona11

منم همینطور که داشتم کد رو چک میکردم،متوجه شدم تابع  jd_to_persian  اصلا هیچ مقداری رو بر نمیگردونه.... خودم جای  پارامتر ورودیش،به صورت دستی یه عدد رو وارد کردم و بعدش یه آلرت گذاشتم که بعد از اجرا،آلرت من نمایش داده نشد و فهمیدم این تابع مشکل داره...

----------


## feri10

بالاخره درست شد اینم کد صحیحش:


<script type="text/javascript">
    // متغير هاي مورد نياز
    var Day;
    var Month;
    var Year;
    var pday;
    var pmonth;
    var pyear;

    // دريافت تمام تگ هاي تي دي در صفحه
    var tags = document.getElementsByTagName('TD');
    for (var i = 0; i < tags.length; i++) {
        // دريافت مقدار کلاس تگ
        var TdClassName = tags[i].className;
        // چک کردن مقدار
        if (TdClassName.indexOf('ms-vb2') != -1) {
            // ذخيره مقدار درون تگ
            dateValue = tags[i].innerText;
            var d = new Date(dateValue == "" ? "N" : dateValue);
            // چک کردن اينکه آيا مقدار درون تگ از نوع تاريخ مي باشد يا خير
			if(!isNaN(d))
            {                 
				Year = new Number(d.getFullYear());                                        
				Month = new Number(d.getMonth());
				Day = new Number(d.getDay());
                // تبديل تاريخ ميلادي به شمسي
                var j = gregorian_to_jd(Year, Month, Day);
                perscal = jd_to_persian(j);
                pyear = perscal[0];
                pmonth = perscal[1];
                pday = perscal[2];
                if (Number(pmonth) < 10)
                    pmonth = "0" + pmonth;
                if (Number(pday) < 10) {
                    pday = "0" + pday;
                }
                // ذخيره مقدار تاريخ شمسي
                var shamsiDate = pyear + "/" + pmonth + "/" + pday;
                // جايگذاري مقدار تاريخ ميلادي با شمسي
                tags[i].innerText = shamsiDate;
            }
        }
    }
    // توابع تبديل تاريخ
	
	function mod(a, b)
	{
		return a - (b * Math.floor(a / b));
	}
    function leap_gregorian(year) {
        return ((year % 4) == 0) &&
            (!(((year % 100) == 0) && ((year % 400) != 0)));
    }

    function gregorian_to_jd(year, month, day) {
        var GREGORIAN_EPOCH = 1721425.5;
		return (GREGORIAN_EPOCH - 1) +
            (365 * (year - 1)) +
            Math.floor((year - 1) / 4) +
            (-Math.floor((year - 1) / 100)) +
            Math.floor((year - 1) / 400) +
            Math.floor((((367 * month) - 362) / 12) +
            ((month <= 2) ? 0 :
            (leap_gregorian(year) ? -1 : -2)) +
            day);
    }

	function persian_to_jd(year, month, day)
	{
		var PERSIAN_EPOCH = 1948320.5;
		var epbase, epyear;
		epbase = year - ((year >= 0) ? 474 : 473);
		epyear = 474 + mod(epbase, 2820);
	
		return day +
				((month <= 7) ?
					((month - 1) * 31) :
					(((month - 1) * 30) + 6)
				) +
				Math.floor(((epyear * 682) - 110) / 2816) +
				(epyear - 1) * 365 +
				Math.floor(epbase / 2820) * 1029983 +
				(PERSIAN_EPOCH - 1);
	}
	function jd_to_persian(jd)
	{
		var year, month, day, depoch, cycle, cyear, ycycle,
        aux1, aux2, yday;
		jd = Math.floor(jd) + 0.5;
		depoch = jd - persian_to_jd(475, 1, 1);
		cycle = Math.floor(depoch / 1029983);
		cyear = mod(depoch, 1029983);
		if (cyear == 1029982) {
			ycycle = 2820;
		} else {
			aux1 = Math.floor(cyear / 366);
			aux2 = mod(cyear, 366);
			ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) +
						aux1 + 1;
		}	
		year = ycycle + (2820 * cycle) + 474;
		if (year <= 0) {
			year--;
		}
		yday = (jd - persian_to_jd(year, 1, 1)) + 1;
		month = (yday <= 186) ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);
		day = (jd - persian_to_jd(year, month, 1)) + 1;
		return new Array(year, month, day);
	}
</script>

----------


## mona11

احسنت....مرسی آقا فری مرسی آقای احمدی...یه کم استراحت کنیم،شب میریم سراغ قسمت دوم مقاله :)

----------


## feri10

ارادت.
من که نمیتونم استراحت کنم باید همین الان قسمت دوم رو هم تست کنم اگر کمک کنید ممنون میشم.

----------


## mona11

اینم که مقدارشو اشتباه برمیگردونه :)))))
امروز تاریخش 2013/4/15 هست دیگه؟درست؟باید 1392/1/26 برگردونه که مقدار 1391/12/11 رو برمیگردونه :)

----------


## rtech

مشکلاتی که برای شما به وجود اومده به خاطر اینه که در سایت های انگلیسی فرمت تاریخ به صورت سال ، ماه ، روز نیست ، بلکه به صورت ماه ، روز ، سال ذخیره میشه ، از کدهای زیر استفاده کنید تا مشکلتون حل بشه :

<script type="text/javascript">

		// متغیر های مورد نیاز
		var Day;
		var Month;
		var Year;
		var pday;
		var pmonth;
		var pyear;
		
		// الگوی تشخیص مقادیر تاریخ
		var RegExPattern = "\\d{1}\\/\\d{2}\\/\\d{4}";
		var RegExPattern2 = "\\d{2}\\/\\d{2}\\/\\d{4}";
		// دریافت تمام تگ های تی دی در صفحه
		var tags = document.getElementsByTagName('TD');
		for (var i = 0; i < tags.length; i++) 
		{ 
			// دریافت مقدار کلاس تگ
			var TdClassName = tags[i].className;

			// چک کردن مقدار
			if (TdClassName .indexOf('ms-vb2') != -1)
			{
				// ذخیره مقدار درون تگ
				if(document.all){
					dateValue = tags[i].innerText;	
				} else{
					dateValue = tags[i].textContent;
				}
							
				var regx = new RegExp(RegExPattern, "g");
				var regx2 = new RegExp(RegExPattern2, "g");
				// چک کردن اینکه آیا مقدار درون تگ از نوع تاریخ می باشد یا خیر
				if (regx.test(dateValue) || regx2.test(dateValue)) 
				{		
					var splitter = dateValue.split('/');
					Year = new Number(splitter[2]);	
					Month = new Number(splitter[0]);
					Day = new Number(splitter[1]);
					
					// تبدیل تاریخ میلادی به شمسی
					var j = gregorian_to_jd(Year,Month,Day);
					perscal = jd_to_persian(j);
					pyear = perscal[0];
					pmonth = perscal[1];
					pday = perscal[2];
					
					if(Number(pmonth) < 10)
						pmonth = "0" + pmonth;

					if(Number(pday) < 10)
					{
						pday = "0" + pday;							
					}
					// ذخیره مقدار تاریخ شمسی
					var shamsiDate = pyear + "/" + pmonth + "/" + pday;
					
					// جایگذاری مقدار تاریخ میلادی با شمسی
					if(document.all){
						tags[i].innerText = shamsiDate;
					} else{
						tags[i].textContent = shamsiDate;
					}
					
				}
				
			}
		}

		// توابع تبدیل تاریخ
		var GREGORIAN_EPOCH = 1721425.5;
		function leap_gregorian(year) {
			return ((year % 4) == 0) &&
					(!(((year % 100) == 0) && ((year % 400) != 0)));
		}


		function gregorian_to_jd(year, month, day) {
			return (GREGORIAN_EPOCH - 1) +
				   (365 * (year - 1)) +
				   Math.floor((year - 1) / 4) +
				   (-Math.floor((year - 1) / 100)) +
				   Math.floor((year - 1) / 400) +
				   Math.floor((((367 * month) - 362) / 12) +
				   ((month <= 2) ? 0 :
									   (leap_gregorian(year) ? -1 : -2)
				   ) +
				   day);
		}

		function jd_to_persian(jd)
		{
			var year, month, day, depoch, cycle, cyear, ycycle,
				aux1, aux2, yday;


			jd = Math.floor(jd) + 0.5;

			depoch = jd - persian_to_jd(475, 1, 1);
			cycle = Math.floor(depoch / 1029983);
			cyear = mod(depoch, 1029983);
			if (cyear == 1029982) {
				ycycle = 2820;
			} else {
				aux1 = Math.floor(cyear / 366);
				aux2 = mod(cyear, 366);
				ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) +
							aux1 + 1;
			}
			year = ycycle + (2820 * cycle) + 474;
			if (year <= 0) {
				year--;
			}
			yday = (jd - persian_to_jd(year, 1, 1)) + 1;
			month = (yday <= 186) ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);
			day = (jd - persian_to_jd(year, month, 1)) + 1;
			return new Array(year, month, day);
		}
		
		
		
</script>

----------


## feri10

مرسی آقای احمدی بابت لطفتون.
کد شما بعضی وقت ها کار نمیکنه یا اگر با زمان باشه تاریخ خطا میده . یک کد میزارم فکر کنم این بهتره واسه هر قالبی هم کار می کنه.


<script type="text/javascript">
    // متغير هاي مورد نياز
    var Day;
    var Month;
    var Year;
    var pday;
    var pmonth;
    var pyear;

    // دريافت تمام تگ هاي تي دي در صفحه
    var tags = document.getElementsByTagName('TD');
    for (var i = 0; i < tags.length; i++) {
        // دريافت مقدار کلاس تگ
        var TdClassName = tags[i].className;
        // چک کردن مقدار
        if (TdClassName.indexOf('ms-vb2') != -1) {
            // ذخيره مقدار درون تگ
            dateValue = tags[i].innerText;
            var d = new Date(dateValue == "" ? "N" : dateValue);
            // چک کردن اينکه آيا مقدار درون تگ از نوع تاريخ مي باشد يا خير
			if(!isNaN(d))
            {                 
				Year = d.getFullYear();                                        
				Month = d.getMonth() + 1;
				Day = d.getDate();
                // تبديل تاريخ ميلادي به شمسي
                var j = gregorian_to_jd(Year, Month, Day);
                perscal = jd_to_persian(j);
                pyear = perscal[0];
                pmonth = perscal[1];
                pday = perscal[2];
                if (Number(pmonth) < 10)
                    pmonth = "0" + pmonth;
                if (Number(pday) < 10) {
                    pday = "0" + pday;
                }
                // ذخيره مقدار تاريخ شمسي
                var shamsiDate = pyear + "/" + pmonth + "/" + pday;
                // جايگذاري مقدار تاريخ ميلادي با شمسي
                tags[i].innerText = shamsiDate;
            }
        }
    }
    // توابع تبديل تاريخ
	
	function mod(a, b)
	{
		return a - (b * Math.floor(a / b));
	}
    function leap_gregorian(year) {
        return ((year % 4) == 0) &&
            (!(((year % 100) == 0) && ((year % 400) != 0)));
    }

    function gregorian_to_jd(year, month, day) {
        var GREGORIAN_EPOCH = 1721425.5;
		return (GREGORIAN_EPOCH - 1) +
            (365 * (year - 1)) +
            Math.floor((year - 1) / 4) +
            (-Math.floor((year - 1) / 100)) +
            Math.floor((year - 1) / 400) +
            Math.floor((((367 * month) - 362) / 12) +
            ((month <= 2) ? 0 :
            (leap_gregorian(year) ? -1 : -2)) +
            day);
    }

	function persian_to_jd(year, month, day)
	{
		var PERSIAN_EPOCH = 1948320.5;
		var epbase, epyear;
		epbase = year - ((year >= 0) ? 474 : 473);
		epyear = 474 + mod(epbase, 2820);
	
		return day +
				((month <= 7) ?
					((month - 1) * 31) :
					(((month - 1) * 30) + 6)
				) +
				Math.floor(((epyear * 682) - 110) / 2816) +
				(epyear - 1) * 365 +
				Math.floor(epbase / 2820) * 1029983 +
				(PERSIAN_EPOCH - 1);
	}
	function jd_to_persian(jd)
	{
		var year, month, day, depoch, cycle, cyear, ycycle,
        aux1, aux2, yday;
		jd = Math.floor(jd) + 0.5;
		depoch = jd - persian_to_jd(475, 1, 1);
		cycle = Math.floor(depoch / 1029983);
		cyear = mod(depoch, 1029983);
		if (cyear == 1029982) {
			ycycle = 2820;
		} else {
			aux1 = Math.floor(cyear / 366);
			aux2 = mod(cyear, 366);
			ycycle = Math.floor(((2134 * aux1) + (2816 * aux2) + 2815) / 1028522) +
						aux1 + 1;
		}	
		year = ycycle + (2820 * cycle) + 474;
		if (year <= 0) {
			year--;
		}
		yday = (jd - persian_to_jd(year, 1, 1)) + 1;
		month = (yday <= 186) ? Math.ceil(yday / 31) : Math.ceil((yday - 6) / 30);
		day = (jd - persian_to_jd(year, month, 1)) + 1;
		return new Array(year, month, day);
	}
</script>


موفق باشید.

----------


## Ariaee.Tahereh

مرسي آق فري من با اين كد مشكل داشتم اين كده آخري كه زحمتش و كشيديد داخل MasterPage گذاشتم جواب داد فقط منم برم سراغ قسمت دوم مقاله  :تشویق: 

فقط يه سوال از حضورتان داشتم  اينكه تاريخ به شمسي كانورت ميشه ولي چه كنيم كه علاوه بر تاريخ شمسي ميلادي هم داشته باشيم ببينيد برخي از ليست ها 

شامل تاريخ ميلادي و برخي شامل تاريخ شمسي اينكه Source Code  همان ليست را ويرايش كنم كفايت ميكند ؟

----------


## feri10

سلام.
دوست عزیز ببینید شما دارید توی مسترپیج تغییرات را اعمال می کنید پس توی همه ی قسمت ها تاریختون شمسی را نشان میده.
البته اگر خودتون قسمت دوم را ببینید متوجه می شوید که در ذخیره تاریخ ها که خارج از رنج میلادی است به خطا می خورید پس فعلا عجله نکنید.

----------


## Ariaee.Tahereh

> البته اگر خودتون قسمت دوم را ببینید متوجه می شوید که در ذخیره تاریخ ها  که خارج از رنج میلادی است به خطا می خورید پس فعلا عجله نکنید.


  سلام بله اينكه با تغيير Master Page  به تمامي زير سايتها اعمال ميشه بحثي نيست و سوالم اينه كه اگر بخواهيم به بعضي ستونها اعمال بشه از طريق Source Cod همون ليست اقدام كنيم نه MasterPage تا اينجا اوكي ولي من مقاله دوم آقاي احمدي هم اجرا كردم و شكل تقويم هم بروي DataPicker ديده ميشه ولي بعد از ذخيره پيغام ميده چه كنم كه اوكي بشه ؟ تقويم شمسي رو مخم رفته بد  :افسرده:

----------


## feri10

همین که قبلا گفتم چون شیرپوینت نمیتونه تاریخ شمسی را ذخیره کنه خطا میده. برای ذخیره کردن من که اصلا وقت ندارم ولی آقای احمدی که همیشه لطف دارن قراره درستش کنن.
موفق باشید.

----------


## Ariaee.Tahereh

بله صد در صد همه درگير وشلوغند ولي بازهم متشكرم .

----------


## mona11

ساخت تقویم شمسی با این روش آقای احمدی کار سختیه اما راههای دیگه ای هم هست که نیاز شما رو برطرف میکنه...میتونید از از Event Reciever استفاده کنید .حتی میتونید کدی رو بنویسید و اون رو داخل فرم اینفو پت هم به کار گیری کنید.اما روش آقای احمدی خیلی راه حل شیک و مجلسیش هست  :لبخند:

----------


## nephew

> ساخت تقویم شمسی با این روش آقای احمدی کار سختیه اما راههای دیگه ای هم هست که نیاز شما رو برطرف میکنه...میتونید از از Event Reciever استفاده کنید .حتی میتونید کدی رو بنویسید و اون رو داخل فرم اینفو پت هم به کار گیری کنید.اما روش آقای احمدی خیلی راه حل شیک و مجلسیش هست


سلام، میشه بیشتر توضیح بدین چطوری باید از event receiver استفاده کرد؟  :متفکر:

----------


## mona11

این مبحث،خودش یه دوره آموزشی در سطح Developer میطلبه که میتونید با شرکت در کلاسهای آموزشی شیرپوینت اون رو فرا بگیرید.البته اگر دوره Develop رو جایی برگذار کنند!!!

----------


## Ariaee.Tahereh

مهندس آخه اين موردي هم كه آقاي احمدي زحمت رو كشيدند كه فقط تاريخ شمسي ميدهد و دوتا انتخاب نميده كه توضيح يعديشون هم كه با error  مواجه شديم پس عملا كاري نميشه كرد  :افسرده:

----------


## nephew

این روش رو کسی روی 2013 امتحان کرده؟
جواب میده؟
من امتحان کردم ولی هیچ کدوم جواب نداد :افسرده:

----------


## mohsenashkboos

سلام من روی 2013 امتحان کردم هیچ جوره جواب نمیده مشکلش هم اینه که اصلاً تگ های td رو شناسایی نمیکنه که بخواد وارد بقیه بشه

----------

