Sharepoint AD üzerindeki distribution List'e mail göndermiyor

Merhaba,

Sharepoint üzerinde bir listeye Alert tanımlamama rağmen. Alert içinde tanımladığım Distribution List içindeki kullanıcılara mail gitmiyordu. 
Durumu çözebilmek için bir sürü şey denedim. Ancak sonuca şu şekilde ulaşabildim:

  1. Exchange ManageMent Console açılır
  2. Microsoft Exchange -> Microsoft Exchange on-Premises -> Recipient Configuration -> Distribution adımına ilerle
  3. Mail gönderemediğin Distribution Grubunu bul
  4. Properties'e tıkla
  5. "Mail Flow Settings" Tab'ine tıkla
  6. “Message Delivery Restrictions” a tıkla
  7. “Require that all senders are authenticated” üzerindeki check'i kaldır
  8. OK tıkla
  9. OK tıkla

Bugün Doğanlar listesi yapmanız için aşırı pratik çözüm

Bugün hiç kod yazasım yoktu. Boyuna sörf yaptım, ne var ne yok vs. Bir yandan da yapmam gereken bir bugünDoğanlar webpart'ı vardı. Zaman geçiyor ama ben hala saçma sapan şeylerle uğraşıyorum. 

Öncelikle aklıma bir liste yapıp içine bir şekilde bütün kullanıcıları alıp, sadece d.tarihi bugün olanları göstermek geldi. Bu konuda herhangi bir çözüm üretemedim

Okuduğum makaleler hep webPart yapmaya yönlendiriyordu. Son bi umut google'a "how to get all users in sharepoint 2010" keywordunu yazdım ve şu sihirli linki buldum:

http://mysite/_layouts/people.aspx?MembershipGroupId=0&FilterField1=ContentType&FilterValue1=Person

Sonra Ana sayfama sharepoint'in default webPartlarından Page Viewer Web Partını ekledim. Yukardaki linki webPart ayarlarındaki Bağlantı kutucuğuna yazdım.

ve tüm kullanıcı listesini MasterPage'li de olsa almayı başardım.

Url'nin sonuna masterPage görünmesin diye

&IsDlg=1 ekledim.

Son olarak URL Böyle oldu : http://mysite/_layouts/people.aspx?MembershipGroupId=0&FilterField1=ContentType&FilterValue1=Person&IsDlg=1

ve sonunda web Part'ımın içinde Tüm kullanıcıların listesi göründü.

Liste üzerinde ayarlar/Liste Ayarları/Görünüm Oluştur ile yeni bir view oluşturdum.

view'ın filter kısmını aşağıdaki gibi doldurdum (Örnekte Oluşturma Tarihi alanını kullandım, siz varsa alanı Doğum Tarihi olarak değiştirebilirsiniz)

Default view olarak set ettim ve istediğim bugün doğanlar görünümlü webPartı  elde ettim.

 

Yazılarımın şekilsel bozukluklarını bir ara düzelteceğim inşallah :) Aceleyle unutmadan yazayım derken darmadağınık birşey çıkıyor. Umarım işinizi görür. Sorunuz varsa çekinmeyin lütfen...

Liste içinde seçilen kişinin profil bilgilerini göstermek

İşe yeni başlayan personellerin görüntüleneceği bir liste yapmam lazım. Listeye kişiler manuel olarak eklenecek, kullanıcı sadece kişi adını lookup yapıp diğer alanların da listede görüntülenmesini istiyor.

Bu işi kod yazmadan yapmam gerekiyor.

Öncelikle Özel Liste tipinde bir liste yarattım(YeniBaslayanlar).

kolon AdıKolon TipiGösterilecek Alan
Title Tek satır metin  --
Personel Adı Kişi veya Grup Ad (resim ve ayrıntılarıyla)
Bölümü Kişi veya Grup Bölüm

 

 

Personel adı doldurulduğunda Bölümü alanının da otomatik olarak güncellenmesini istiyorum. Bunun için birkaç farklı method var. Ben workflow ile yapmayı tercih ettim.

Sharepoint Designer'ı açtım

List & libraries altında yarattığım listeyi buldum

 

 

listeye tıkladım. Liste özelliklerinden Workflows/New butonuna tıkladım

 

Worklfowuma isim verdim

 

Conditions tabından Kişi geçerli bir SharePoint kullanıcısıysa değerini seçiyoruz.

 

 

Ardından Kişi linkine tıklıyoruz ve girilen kişinin geçerli bir SP kullanıcısı olup olmadığını kontrol ettiriyoruz

 

Personel Adı alanının loginname(oturum açma adı) özelliğine baktırıyoruz

 

Action Tabından Liste öğesini güncelleştir diyoruz

 

Sırasıyla aşağıdaki işlemleri yapıyoruz:

 

OK buttonlarını bitirdikten sonra Save Buttonuna ardından da Publish buttonuna tıklıyoruz.

Workflowun otomatik olarak çalışmasını istiyorsak;

Sharepoint Designer üzerinde Workflowumuzu buluyoruz

 

 

ve start options altındaki ayarları yapıyoruz

 

 

Önemli Not: Listeyi denerken Root kullanıcı ile deneme yapmayınız!

Windows SharePoint Services 3.0 Service Pack 1 yüklü sistemlerde root kullanıcısı ile giriş yaptıysanız workflowlar otomatik olarak çalışmıyor.

bu sorunu düzeltmek isterseniz : http://kbalertz.com/947284/declarative-workflow-start-automatically-after-install-Windows-SharePoint-Services-Service.aspx

Sharepoint 2010 üzerinde bir sayfayı popover (pop-up dialog) şeklinde gösterme

SharePoint üzerinde farklı listelerden veri alan bir webpart hazırladım. Listedelerdeki tün kolonları alabiliyordum, hatta liste başlığına tıklayınca listedeki kaydın bulunduğu sayfaya bile gidebiliyordum.

Ancak liste içeriğini ayrı bir sayfada değil de popOver olarak göstermem gerekiyordu. Normal liste wbpartındaki linklerin onclick scriptlerini vs. kopyalayıp denedim ama bir türlü popover olarak görünmedi listem. 

Sonunda bir javascript metodu buldum (OpenPopUpPage) ve bunu direk linkimin href property sine verdim, oldu!!

Örnek url:

<a href="javascript:OpenPopUpPage(URL)" />deneme</a>

Ben html sözcüğünü kod içinde yarattığım için aşağıdaki gibi bir kod yazdım:

sb.Append(@"<a href=javascript:OpenPopUpPage('" + item["URL"].ToString() + "'); >");
sb.Append(@"<img src='" + resimURL + "' title='" + HtmlRemoval.StripTagsRegex(item["Title"].ToString()) + "' />");
sb.Append(@"</a>");

SharePoint 2010 ribbon üzerinde kullanıcı resmini gösterme (like facebook)

 

Yukarıdaki gibi kullanıcı resmini riibon üzerinde göstermek için aşağıdaki işlemleri yapmanız yeterli.

  • MasterPage içine aşağıdaki kodu register edin
<%@ Register Tagprefix="ucPortal" Namespace="Microsoft.SharePoint.Portal.WebControls" Assembly="Microsoft.SharePoint.Portal, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
  • <wssuc:Welcome id="IdWelcome" runat="server" EnableViewState="false"></wssuc:Welcome>
    yazan satırı bulun.
  • <wssuc:Welcome Tag'inin hemen öncesine aşağıdaki kodu yapıştırın
<ucPortal:ProfilePropertyLoader runat="server" />
<ucPortal:ProfilePropertyImage PropertyName="PictureUrl" ResizeToFit="1" style="height:29px" ShowPlaceholder="true" id="PictureUrlImage" runat="server"/>
  •  Checkin ve publish ettikten sonra yukarıdaki resim gibi bir ribbonunuz olacak!

SharePoint 2010 ile Farklı SiteCollection üzerindeki listeyi görüntülemek

Bildiğiniz gibi SharePoint üzerinde faklı "Site Collection" lar kullandığımız zaman yarattığımız içeriği diğer bir "Site Collection" altında göremiyoruz (kod yazmadan).

Bu işlemi yapmak için yeni bir webPart yazmamız gerekiyor. Bu webPart içinde ListViewByQuery isimli bir control kullanarak adresini, view'ini ve ismini verdiğimiz bir liste öğelerini listeleyebiliriz.

 

Daha kolay anlayabilmeniz için önce basit bir versiyonunu yazacağız:
 
        protected ListViewByQuery viewByQuery = null ;
        protected EncodedLiteral encodedLiteral = null;
        protected override void CreateChildControls()
        {
            SPSite site = null ;
            SPWeb web = null ;
            this .siteUrl = "Http://intranet" ;
            this .sourceList = "Grup Duyuruları" ;
            site = new SPSite ( this.SiteUrl);
            web = site.OpenWeb();
            SPList sourceList = web.Lists[this .SourceList];
            viewByQuery = new ListViewByQuery ();
            SPQuery query = null ;
            viewByQuery.List = sourceList;
            query = new SPQuery (viewByQuery.List.DefaultView);
            viewByQuery.Query = query;
            this .Controls.Add(viewByQuery);
        }

Yukarıdaki örnekte aşağıdaki öğelerin değerlerini el ile verdik:

siteURL : Listemizin bulunduğu SiteCollection'un adresi
sourceList :Liste adı
query  : Liste filtresi (örnekte DefaultView kullandık) 

 

Eğer Parametreleri webPart üzerinden değiştirebilmek ve Webpartı özelleştirilebilir yapmak istiyorsak Kod bütünü aşağıdaki gibi olmalıdır:

#region using statements

using System;
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Runtime.InteropServices;
using System.Xml.Serialization;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
#endregion

namespace gosterici2.VisualWebPart1
{
    [ToolboxItemAttribute(false)]
    public class VisualWebPart1 : System.Web.UI.WebControls.WebParts.WebPart
    {
        // Visual Studio might automatically update this path when you change the Visual Web Part project item.
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/gosterici2/gosterici2/gostericiII.ascx";

        #region protected child control variable definitions
        protected ListViewByQuery viewByQuery = null;
        protected EncodedLiteral encodedLiteral = null;
        #endregion

        #region webpart properties
        /// <summary>
        /// 
        /// </summary>
        private string viewNameField = string.Empty;
        [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
         WebDisplayName("View Name"), WebDescription("View Name")]
        public string ViewName
        {
            get
            {
                return this.viewNameField;
            }
            set
            {
                this.viewNameField = value;
            }
        }
        
        /**********************************************************/
        /*Bir webparta property tanımlamak için gerekli kod*******/
        private string recepField = string.Empty;
        [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
         WebDisplayName("İsminiz"), WebDescription("Adınızı yazınız")]
        public string RecepField
        {
            get
            {
                return this.recepField;
            }
            set
            {
                this.recepField = value;
            }
        }
        /**********************************************************/


        private string siteUrlField = string.Empty;
        [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
         WebDisplayName("Site Url"), WebDescription("Site Url")]
        public string SiteUrl
        {
            get
            {
                return this.siteUrlField;
            }
            set
            {
                this.siteUrlField = value;
            }
        }
        /// <summary>
        /// 
        /// </summary>
        private string sourceListField = string.Empty;
        [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
         WebDisplayName("Source List"), WebDescription("Source list to query")]
        public string SourceList
        {
            get
            {
                return this.sourceListField;
            }
            set
            {
                this.sourceListField = value;
            }
        }
        private Boolean disableFilterField = false;
        [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
         WebDisplayName("Disable Filter"), WebDescription("Disable List Filtering")]
        public Boolean DisableFilter
        {
            get
            {
                return disableFilterField;
            }
            set
            {
                disableFilterField = value;
            }
        }
        private Boolean disableSortField = false;
        [Personalizable(), WebPartStorage(Storage.Shared), WebBrowsable(),
         WebDisplayName("Disable Sort"), WebDescription("Disable list sorting")]
        public Boolean DisableSort
        {
            get
            {
                return disableSortField;
            }
            set
            {
                this.disableSortField = value;
            }
        }
        #endregion

        #region overrides
        protected override void CreateChildControls()
        {
            base.CreateChildControls();
            SPSite site = null;
            SPWeb web = null;
            Boolean disposeSPSite = false;
            try
            {
                if (this.SourceList != string.Empty)
                {
                    viewByQuery = new ListViewByQuery();
                    if (this.SiteUrl != null && this.SiteUrl != string.Empty)
                    {
                        site = new SPSite(this.SiteUrl);
                        disposeSPSite = true;
                    }
                    else
                    {
                        site = SPContext.Current.Site;
                    }
                    web = site.OpenWeb();
                    SPList sourceList = web.Lists[this.SourceList];
                    viewByQuery.List = sourceList;
                    SPQuery query = null;
                    if (CheckIfViewExists(viewByQuery.List))
                    {
                        //use the view specified in webpart property
                        query = new SPQuery(viewByQuery.List.Views[this.ViewName]);
                    }
                    else
                    {
                        //use default view to initialized
                        query = new SPQuery(viewByQuery.List.DefaultView);
                    }
                    viewByQuery.Query = query;
                    viewByQuery.DisableFilter = this.DisableFilter;
                    viewByQuery.DisableSort = this.DisableSort;
                    
                    this.Controls.Add(viewByQuery);
                }
                else
                {
                    encodedLiteral = new EncodedLiteral();
                    encodedLiteral.Text = "This webpart is not configured.";
                    this.Controls.Add(encodedLiteral);
                }
            }
            finally
            {
                if (disposeSPSite)
                {
                    ((IDisposable)site).Dispose();
                    ((IDisposable)web).Dispose();
                }
            }
        }
        protected override void RenderContents(HtmlTextWriter writer)
        {
            EnsureChildControls();
            RenderChildren(writer);
        }
        #endregion

        #region helper methods
        private Boolean CheckIfViewExists(SPList list)
        {
            Boolean ret = false;
            foreach (SPView view in list.Views)
            {
                if (view.Title.ToLower() == this.ViewName.ToLower())
                {
                    ret = true;
                }
            }
            return ret;
        }
        #endregion
    }
}
 
Kaynak:http://blogs.msdn.com/b/ramg/archive/2009/04/22/implementing-a-simple-cross-site-collection-list-view-webpart.aspx