0

Bu makalemde sizlere Sharepoint 2010 üzerinde Custom bir WebPart kullanarak Cisco Call Manager aramalarının Visual Studio ile database den çekip Sharepoint üzerinde gösterilmesini anlatacağım.

Visual studioyu açtıktan sonra visual webpart projesi oluşturuyoruz. Daha sonra add > new item > visual web part ı seçip “ciscocagri” ismini verdikten sonra add butonuna basıyoruz.


Resim-1

Html tarafında aşağıdaki css kodlarını ekleyeceğiz. Bu kodlar web partın görselliği için Aşağıdaki resimde göreceğiniz gibi Mouse “Gelen Aramalar”ın üzerine geldiğinde O kısım aktif ve renkli olacaktır. Giden Aramalar kısmına geldiğinizde otomatik olarak “Giden Aramlar” gözükecek ve o bilgileri gösterecektir sizlere.


Resim-2


Resim-3

Tab yapısını çalıştırmak için Jquery kütüphanesine ekliyoruz;

<script type=”text/javascript” src=”/SiteAssets/jquery-1.2.6.min.js”></script>


<style
type=”text/css”>


#page{width:315px;margin:auto;}


#tabs{float:left;background:#fff;padding:5px;}


#tab_basliklar{float:left;width:315px;}


#tab_basliklar
span{float:left;padding:5px; margin:0
0px
0
0;cursor:pointer;font:12px
verdana;color:#fff; background-color:#ff0000}


#tab_menuler{display:none;}


#tab_goster{float:left;width:295px;padding:10px;background:#eee;font:10px
verdana;color:#999;}


#tab_goster
a{float:left;padding:2px
5px;margin:0
15px
0
0;color:#800;text-decoration:none;border-bottom:solid
1px
#ccc;}


#tab_goster
a:hover{background:#800;color:#fff;}


#tab_goster
ul{

    padding:5px; background-color:#fff; margin:0px; list-style:none; height:84px;

}


#tab_goster
ul
li{margin-bottom:2px;}


</style>

Tab yapısını aktif etmek için aşağıdaki kodları ekliyoruz (Sağ ve Sol tarafı seçme)

<script
type=”text/javascript”>

$(function () {

tab_menu();

});


var aktif_tab = 0;


function tab_menu() {

tab_degistir(0);

$(“#tab_basliklar > span”).mouseover(function () {


var index = $(“#tab_basliklar > span”).index(this);


if (aktif_tab != index) {

tab_degistir(index);

aktif_tab = index;

}

});

}


function tab_degistir(index) {

$(“#tab_basliklar > span”).stop().animate({ opacity: “0.3” }, 100);

$(“#tab_basliklar > span:eq(“ + index + “)”).stop().animate({ opacity: “1” }, 500);

$(“#tab_goster”).html($(“#tab_menuler > div:eq(“ + index + “)”).html());

$(“#tab_goster a”).css(“opacity”, “0.4”).animate({ opacity: “1” }, 500);

 

}


</script>

Sayfamıza aşağıdaki html kodlarını ekliyoruz. İki tane literal kontrolümüz var değerleri bu kontrollerin üzerine yazacağız. Bu giden ve gelen aramalar için)

<div
id=”page”>


<div
id=”tabs”>


<div
id=”tab_basliklar”>


<span>


<div
style=”width: 150px;”>

Gelen Aramalar</div>


</span><span>


<div
style=”width: 145px;”>

Giden Aramalar</div>


</span>


</div>


<div
id=”tab_menuler”>


<div>


<asp:Literal
ID=”ui_lt_gelen_aramalar” runat=”server”></asp:Literal>


</div>


<div>


<asp:Literal
ID=”ui_lt_gidenaramalar” runat=”server”></asp:Literal>


</div>


</div>


<div
id=”tab_goster”>


</div>


</div>


</div>

Cs tarafına geçiyoruz ve aşağıdaki metodu ekliyoruz. Bu metot sharepoint üzerinden ip telefon bilgisini döndürecek. Not AD içerisinden senkronizasyon ile kullanıcı çekiyorsanız AD içerisinde ip phone bilgisi olması gerek. Mevcut senaryoda Sharepoint kendi içerisindeki IPPhone Attribute’üne bakmaktadır.

public
static
string PropValueGetir(string deger)

{


string result = string.Empty;


try

{


using (SPSite site = new
SPSite(“http://omercelikportal”))

{


ServerContext context = ServerContext.GetContext(site);


UserProfileManager userProfileManager = new
UserProfileManager(context);


UserProfile currentUserUserProfile = userProfileManager.GetUserProfile(System.Web.HttpContext.Current.User.Identity.Name);

result = (string)currentUserUserProfile[“” + deger + “”].Value;

}

}


catch (Exception)

{

}


return result;

}

Sayfanın page load kısımlarına aşağıdaki kodu ekliyoruz.

protected
void Page_Load(object sender, EventArgs e)

{


if (!IsPostBack)

{

string gelenarama = string.Empty;


string gidenarama = string.Empty;


string dahili = AnasayfaC.PropValueGetir(“IpPhone”);

if (!string.IsNullOrEmpty(dahili))

{

Panel1.Visible = true;

gelenarama =gelenaramalar(dahili);

gidenarama =gidenaramalar(dahili);

 


if (!string.IsNullOrEmpty(gelenarama))

{

ui_lt_gelen_aramalar.Text = gelenarama;

}


if (!string.IsNullOrEmpty(gidenarama))

{

ui_lt_gidenaramalar.Text = gidenarama;

}

}

 

}

Gelenaramalar ve gidenaramalar isminde iki tane metot oluşturuyoruz. Dahili numarasını bu metotlara gönderiyoruz. Aşağıda Database ve username kısımlarına kendisine ait bilgileri doldurmanız gerekmektedir.

public
static
string gelenaramalar(string dahili)

{


string result = string.Empty;


string sure = string.Empty;


string areacode = string.Empty;


string telno = string.Empty;


string dakika = string.Empty;


TimeSpan t;


try

{


using (SqlConnection cn = new
SqlConnection(@”Server=.; Database= ciscodb; user=ciscodbuser; pwd= ciscodb;”))

{

 

cn.Open();


string partyID = string.Empty;


string short_name = string.Empty;


SqlCommand cmd1 = new
SqlCommand(“SELECT top 5 STARTDATETIME, DURATION, AREACODE,TELNO from Incomingcalls where EXT=@dahili and DURATION>0 ORDER BY STARTDATETIME DESC”, cn);

cmd1.CommandType = CommandType.Text;

cmd1.Parameters.AddWithValue(“@dahili”, dahili);


SqlDataReader dr = cmd1.ExecuteReader();


if (dr.HasRows)

{

result = “<ul>”;


while (dr.Read())

{

sure = dr[“DURATION”].ToString();

result += “<li>”;

areacode = dr[“AREACODE”].ToString();

telno = dr[“TELNO”].ToString();

dakika = dr[“STARTDATETIME”].ToString();

t = TimeSpan.FromSeconds(Convert.ToDouble(sure));


if (areacode == “0”)

{

areacode = “212”;

}

result += “<i>” + dakika + “</i>” + ” – <u> “ + t.ToString() + “</u> – “ + areacode + ” “ + telno + “</span>”;

result += “</li>”;

 

}

result += “<li>” + BuAytoplamGelen(dahili) + “</li>”;

result += “</ul>”;

}

}

}


catch (Exception ex)

{

 

}


return result;

 

}


public
static
string gidenaramalar(string dahili)

{


string result = string.Empty;


string sure = string.Empty;


string areacode = string.Empty;


string telno = string.Empty;


string dakika = string.Empty;


TimeSpan t;


try

{

using (SqlConnection cn = new
SqlConnection(@”Server=.; Database= ciscodb; user=ciscodbuser; pwd= ciscodb;”)) {

cn.Open();


string partyID = string.Empty;


string short_name = string.Empty;


SqlCommand cmd1 = new
SqlCommand(“SELECT top 5 STARTDATETIME, DURATION, AREACODE,TELNO from Outgoingcalls where EXT=@dahili and DURATION>0 ORDER BY STARTDATETIME DESC”, cn);

cmd1.CommandType = CommandType.Text;

cmd1.Parameters.AddWithValue(“@dahili”, dahili);


SqlDataReader dr = cmd1.ExecuteReader();


if (dr.HasRows)

{

result = “<ul>”;


while (dr.Read())

{

sure = dr[“DURATION”].ToString();

result += “<li>”;

areacode = dr[“AREACODE”].ToString();

telno = dr[“TELNO”].ToString();

dakika = dr[“STARTDATETIME”].ToString();

t = TimeSpan.FromSeconds(Convert.ToDouble(sure));


if (areacode == “0”)

{

areacode = “212”;

}

result += “<i>” + dakika + “</i>” + ” – <u> “ + t.ToString() + “</u> – “ + areacode + ” “ + telno + “</span>”;

result += “</li>”;

 

}

result += “<li>” + BuAytoplamGiden(dahili) + “</li>”;

result += “</ul>”;

}

}

}


catch (Exception)

{

 

}


return result;

 

}

Projemizin kod kısmı bu kadar. Daha sonra projemizi deploy ediyoruz. Deploy işlemi tamamlandığında Sharepoint tarafına geçip;

Sayfa > Sayfayı Düzenle Menüsünden “Web Bölümü Ekle” kısmını seçiyoruz.


Resim-4


Resim-5

Açılan ekranda “Custom” seçeneğinden oluşturduğunuz Web Part’ı seçin. (ciscocagri). Aşağıdaki resimde “AnasayfaTelefonDetay” kısmı sizde CiscoCagri olacaktır.


Resim-6

Seçtiğiniz Webpart istediğiniz kısma gelecektir.


Resim-7

Düzenlemeyi Durdur Butonuna basıp Sayfayı yenilediğinizde verileriniz gelecektir.


Resim-8


Resim-9

Bu konuyla ilgili sorularınızı Http://forum.mshowto.org alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.technet.com

www.mshowto.org

www.omercelik.com.tr 

Bu İçeriğe Tepkin Ne Oldu?
  • 0
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

1982 yılında İstanbul'da doğan Fatih Teke, Atatürk Üniversitesi Endüstriyel Elektronik Bölümünü bitirdikten sonra şirketlerin bilgi işlem departmanlarında çalışmaya başladı. Commodore 64 ile başlayan bilgisayar macerası, 2003 yılında profesyonel olarak devam etmiştir. Şu anda Sigorta Bilgi ve Gözetim Merkezinde Birim Yöneticisi olarak görev almakta olan Fatih Teke, Microsoft yetkili eğitmeni MCT (Microsoft Certified Trainer) sertifikasına sahiptir. Ayrıca Symantec Official Web sitesinde yaptığı çözümler, paylaştığı videolar ve makaleler ile Symantec Trusted Advisor unvanına layık görülmüştür. Türkiye’deki ilk ve tek Trusted Advisor olan Fatih Teke boş zamanlarında tenis ve satranç müsabakalarına katılmaktadır. Active Directory, Exchange Server, Symantec EndPoint Protection, Skype For Business, Teams, SCCM, SCOM, Powershell Scripting ve Server İşletim Sistemleri ilgi alanları dahilindedir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir