نکاتی درباره کار با سایت‌ها به صورت برنامه‌نویسی در شیرپوینت

در شیرپوینت می‌توانید مجموعه‌ای از سایت‌ها با تنظیمات مختلف را برای کاربران و تیم‌ها ایجاد کنید و همه این کارها با کمک کدنویسی هم قابل انجام است

قبل از شروع، برای اینکه در شیرپوینت بخواهید با برنامه‌نویسی تحت سرور با داده‌ها کار کنید نیاز به dll مرتبط یعنی Microsoft.SharePoint.dll دارید. این dll را به پروژه‌تان اضافه کنید. اگر در پنجره Add Reference این dll را پیدا نکردید، محل قرارگیری آن در آدرس زیر می‌باشد

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI

به جای c در آدرس بالا درایوی که ویندوز در آن نصب شده است را قرار می‌دهید و به جای عدد 14 عدد مربوط به نسخه شیرپوینتتان. عدد 12 مربوط به شیرپوینت 2007،‌ عدد 14 مربوط به شیرپوینت 2010 و عدد 15 مربوط به شیرپوینت 2013 است.

نکاتی درباره کار با object سایت‌ها در شیرپوینت

اول باید توجه کنید که هر سایتی که در شیرپوینت ایجاد می‌شود در واقع یک Site Collection‌ یا مجموعه سایت است. به هر مجموعه سایت می‌توان به تعداد دلخواه زیرسایت اضافه کرد، تنها محدودیتی که وجود دارد محدودیت‌هایی درباره حجم دیتابیس شیرپوینت است. هر مجموعه سایت حداقل یک زیرسایت اصلی دارد. در شیرپوینت به مجموعه سایت، Site‌ و به زیرسایت‌ها Web گفته می‌شود و معادل همین دو عبارت نیز در کلاس‌های مربوط به کار با سایت‌ها در شیرپوینت وجود دارد که در موردشان توضیح خواهم داد. مفهوم اشاره شده در خصوص سایت و زیرسایت در توسعه راهکارهای شیرپوینتی که feature ای برای نصب دارند نیز استفاده می‌شود، feature شما می‌تواند در سطح مجموعه سایت باشد یا در سطح زیرسایت‌ها (البته سطوح farm و web application نیز وجود دارند)

در Microsoft.SharePoint دو کلاس اصلی برای کار با سایت‌ها وجود دارد: SPSite‌ و SPWeb که با توجه به توضیح بالا SPSite برای کار با مجموعه سایت و SPWeb برای کار با زیرسایت‌ها مورد استفاده قرار می‌گیرد.

اگر بخواهیم به یک سایت در شیرپوینت دسترسی داشته باشیم به شکل زیر عمل می‌کنیم (به جای siteUrl آدرس سایت خودتان را قرار بدهید)

با کمک خطوط بالا تنها به شی مجموعه سایت دسترسی ایجاد کرده‌ایم. حالا اگر بخواهیم مثلاً به یک لیست شیرپوینت دسترسی داشته باشیم ابتدا باید شی زیرسایت مربوطه را باز کنیم. اگر زیر سایت مورد نظر زیرسایت اصلی مجموعه سایت باشد به یکی از دو شکل زیر می‌توانیم به آن دسترسی داشته باشیم:

یا روش دوم استفاده از مند OpenWeb

و اگر زیرسایت مربوطه در آدرس دیگری وجود داشته باشد می‌توانیم از روش‌های دیگر استفاده از متد OpenWeb بهره ببریم یا همین روال را تکرار کرده و به جای siteUrl از آدرس آن زیرسایت استفاده کنیم. در واقع می‌توان به هر زیرسایت نیز در برنامه‌نویسی شیرپوینت به چشم یک مجموعه سایت نگاه کرد که خودش می‌تواند حاوی زیرسایت‌های دیگری باشد، بر این اساس مثلاً برای دسترسی به زیرسایت fa که در مجموعه سایت وجود دارد با متد OpenWeb به روش زیر می‌توانیم عمل کنیم:

سطح مجوز دسترسی در کد

مهمترین نکته‌ای که در کار با اشیاء و کلاس‌های شیرپوینتی باید به آن توجه کنید میزان مجوز کاربری است که در حال کار با کد شماست. کد ساده OpenWeb یک آدرس اگر کاربر جاری به آن آدرس دسترسی نداشته باشد، باعث بروز خطای Access Deny می‌شود. در حالت عادی وقتی شما کدی مشابه کدهای بالا را می‌نویسید کد با دسترسی کاربر جاری اجرا می‌شود، یعنی هر کاربری که به شیرپوینت login کرده باشد بسته به مجوزهای خودش از طریق کد شما با داده‌های شیرپوینت کار می‌کند.

چنانچه بخواهیم کار با دسترسی مدیرسیستم انجام شود از متد SPSecurity.RunWithElevatedPrivileges می‌توانیم استفاده کنیم. SPSecurity.RunWithElevatedPrivileges باید برای شی‌ که از کلاس SPWeb گرفته می‌شود استفاده شود و لزومی به استفاده از آن برای SPSite نیست. کد نحوه استفاده از SPSecurity.RunWithElevatedPrivileges به شرح زیر است. در این حالت کد شما با دسترسی کاربری که در Application Pool درون IIS برای web application شیرپوینتی شما ست شده است اجرا خواهد شد.

در نوشته بعدی در خصوص کار با لیست‌ها صحبت خواهم کرد.

پی نوشت: کدهای نوشته شده در این مطلب در تمامی نسخه‌های شیرپوینت به صورت یکسان کار می‌کند.