SharePoint Shop Talk Open Q&A Sessiya Cümə axşamı 08/13 @ 12:30 PM EDT

Arcovis bu cümə axşamı bizim ikinci "SharePoint Shop Talk" sessiyasında ev sahibliyi edəcək 12:30 PM EDT. Show up with your SharePoint questions and we’ll do our best to entertain you with banjo jokes, smart but harmless put-downs of our fellow panelists and maybe even answer a question or two. This week’s “official” panel includes yours truly, mənim Arcovis tərəfdaşlar (Natalya Voskresenskaya və Harry Jones) və Laura Rodgers (haqqında Twitter & EndUserSharePoint şöhrət). Bob fox threatened to join too, but I don’t take that too seriously. Last time, biz panelists və iştirakçılar arasında line bulanık olan tamaşaçı iştirak böyük bir səviyyədə idi və eyni Cümə axşamı baş gözləyirik.

Bu hadisə İnteqrasiya Sistemləri və Services Group tərəfindən birgə maliyyələşdirilir (www.issgroup.net).

Burada qeydiyyatdan keçin: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=9xrzxfs9x34sb0sm

Siz bizi istədiyiniz suallarınız varsa, just dial into the call and ask it. If you want us to think about it first, Bizə bir e-poçt göndər və ya burada Yorum bırakmak.

Sonra baxın!

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Pre-mövcud Conditions: Xilasetmə SharePoint Alert Şablonlar (?)

One of my clients worked with a previous contractor to build out a small but useful HR application for the enterprise. That contractor used SharePoint Designer to implement the workflow portion of the solution. It’s a bit of a mess. Məsələn, there are nine SPD workflows in support of a single logical workflow process and up to five of them may fire simultaneously at any given time given the right conditions. It’s not easy to debug 🙂

Mənim müştəri hələ də görkəmli tələbləri bir sıra, one of which is to generally provide more context when the system sends out email alerts – both in the email itself as well as associated task forms. As SPD workflow implementers know, the “collect data from user” SPD action actually creates a task with a custom content type. When we use that action, we don’t get to specify much. We can prompt for some values (e.g. "Təsdiq" və ya "inkar") and we can specify a hard coded value in the title and description. That’s about it.

Mənim müştəri tələbinə iki qat:

  1. SharePoint tapşırıq tapşırıq haqqında e-poçt göndərir zaman, e-poçt orqan vəzifə haqqında məlumat bir çox daxildir.
  2. Daha da önemlisi, xeyli yaxşı – istifadəçi e-poçt vəzifə link tıkladığında, the task form should have all the information the approver needs in order to make his/her approve or deny decision. Right now, the manager needs to click on the item link itself to drill down into the underlying details and no one likes that. You have to click in the email. Then you need to click a sort of obscure link on the task item. Then you can look at the underlying data (Bu halda bir InfoPath form). Then you click back/back, və s.. Everyone hates it.

Mən bu qədər messy texniki həll miras etdik və mən mümkün ən az müdaxilə yolu ilə dəyişikliklər etmək istəyirik.

The approach I’m taking right now is to create a custom alert template. Siz burada oxuya bilərsiniz. The flow works like this:

  • SPD iş çalışır.
  • Bir anda, bir menecerə tapşırıq verir.
  • SharePoint system automatically sends out an alert to that manager. This is not part of the SPD workflow but rather “what SharePoint does.” (SharePoint timer xidmət, İnanıram).
  • Xüsusi siqnalı handler standart siqnalı prosesinin xeyrinə çağrıldığında (Yuxarıda istinad məqalədə təsvir olunduğu kimi sehrli qaydalarına riayət).
  • Xüsusi siqnalı handler çalıştığında, it generates a beautiful email. Daha da önemlisi, bu tərəfdən vəzifə var, bu da biznes tələblərinə cavab üçün lazım olan bütün kontekstində informasiya ilə faktiki vəzifə bəzəyir.
  • Istifadəçi e-poçt alır və faydalı kontekstində informasiya tam deyil.
  • Vəzifəsi link və vəzifə özü İstifadəçi klik faydalı kontekstində informasiya doludur.
  • Hər kəs qarpız və dondurma üçün ev gedir.

I did a quick POC and it works well in a lab environment. I get my custom email alert as expected. I also get to update the task description and title itself.

Yalnız çətin bit, indiyə qədər, burada uyarı yenilikləri maddə bir vəziyyət qarşısını almaq üçün, triggering another alert. This doesn’t worry me.

Bu günə qədər ümidverici görünür ...

The great thing about this is that I don’t need to muck about with any of the existing SPD workflows. They are blissfully unaware that an alert handler is “IIZ RUNNIN IN DA BAKGROUND, DECORATIN Teh görev siyahısını WIF MOAR MƏZMUNU".

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Live SharePoint Q&A Sessiya Cümə axşamı 07/30/09 @ 12:30 PM EDT bitən 1:30PM EDT

Update: The format for this is basically a conference call with a couple of PPT slides to set the stage. We have a SharePoint environment on stand by to fire up in case it helps out, but this is mainly people talking out loud. There will be opportunities for follow up by email.

Mənim ilk SharePoint konfrans geri gedir, artıq bir il əvvəl, Mən necə dəhşətli bir canlı Q çarpdığı olduğunuz&A session can be. The conference organizers had put together a sort of ad hoc group of “experts” (i.e. ətrafında asma və insanlar səhnədə silly qədər axtarır qorxur deyil) to answer any questions that came from the audience in the room. It was in my head back then, və vaxtaşırı o vaxtdan, to host a similar session but do it on line and the phone. I don’t think it can be as good as an in-person Q&A sessiya, ancaq olduqca sərin ola bilər.

Mən nəhayət ki, bu və sonrakı Cümə axşamı ətrafında var, 07/30, My Company (Arcovis) və biznes tərəfdaşı, İnteqrasiya Sistemləri və xidmətlər qrupu, bir Q ev sahibliyi edəcək&A like that. I’m hoping to do these regularly, as often as weekly.

Bu ilk iclasında yəqin ki, bir az kələ-kötür olacaq, lakin anlayışı bu:

  • Siz sessiyasında cavab istədiyiniz suallarınız varsa, yalnız göstərilir və xahiş.
  • Əgər siz, siz əvvəlcədən sual e-poçt göndər.

Biz Q ilk yarısı sərf etməyi planlaşdırırıq&E-poçt suallara A və sonra hər kəs bundan sonra soruşur ki, bir şey üçün onu açmaq.

Sessiya Cümə axşamı yer tutur, 07/30 starting at 12:30 və sona 1:30 PM EDT.

Əgər istəyirsinizsə, Xahiş burda qeydiyyatdan: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=pxlsd9fpsm2md7h9

The panel will include me and other SharePoint luminaries. Kim olduqlarını öyrənmək üçün qeydiyyatdan keçməlisiniz

Bir gələcək Q o korifeyləri biri olmaq istəyirsinizsə,&A sessiya, Mənə bildirin.

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Technorati Tags:

Sizin InfoPath Formaları Inside Developer Qeydlər yayımla

Mən hələ InfoPath Formaları dünyada yaşayan alıram və mən ki, bir forma bu "kiçik" dəyişikliklər bir etmək üçün lazım, təəssüf ki,, breaks a naming convention I adopted with it two weeks ago. Özümə düşündüm, "Kimsə artıq bir il bu şey baxmaq və demək gedir, 'Nə Paul düşünürdüm? By Jove, onun adlandırma konvensiya heç bir mənada edir!"

Mən sonra mən bu üçün forma baxımından yarada bilər ki, həyata keçirilir və, bir daha, realized that I could have been doing something like this all along. I added a “Developer Notes” view to the InfoPath form as such:

image

Istifadəçilər bu fikri almaq və buna görə də bilməz ki, mən şəklində yapılandırılmış sonra, it’s only visible with the InfoPath client in design view. Now I feel a little inoculated against some future unknown developer looking at my form and thinking bad thoughts about me. Phew!

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Technorati Tags:

InfoPath Views idarə

Mən InfoPath mərhələləri yerləşir keçmək görünür, Mavi həyata, I’m crafting a bunch of forms. My fingers learn how to use the tool well and then I go through nine month drought and have to learn it all over again.

Mən InfoPath mərhələsi ortasında Ben və fikir bir çox InfoPath formaları yaratmaq alıram. Siz yəqin ki, bildiriş bir şeydir ki, InfoPath 2007 client shows views in alphabetical order. This is a real nuisance some times. My best technique these days is to prepend a number to the view name so that they always show in the order I want, burada təsvir kimi:

image

I wish I had been doing this all along.

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Technorati Tags:

InfoPath Form Hizmetleri, Əsaslı Authentication təşkil edir (FBA) və unikal fayl adları

Mən bu həftə bir FBA mühitdə MOSS ildə təşkil bəzi InfoPath üzərində işləyir və öyrənilmiş etdik, Mən FBA zonası ilə istehsal mühitə formaları dağıtmak üçün getdiyi ki, istifadəçi adı() function function does not work. I was using it to generate unique file names.

Yaxşı, that function doesn’t work in an FBA environment (azı, not out of the box). Və, upon reflection, using username in the way I had planned wouldn’t have guaranteed a unique file name in any event.

My solution was to use the now() function and a rule that fires on loading of the form. I assign the file name to data element when it’s blank:

image

image

The advantage of this approach is that the file name is set only once. (I don’t show it in the screen shot, but put a condition on the rule to only fire when “myFilename” is blank). I used to set the file name at the data source level. Typically, I would do something (bad) like this:

image

The problem with that is that if user A opens the form on Monday and the user B changes it on Tuesday, you’ll end up with two different forms since two different users saved it with different user names.

Belə, as annoying as FBA can be in general and with InfoPath in particular, it made me re-think a small but really important technical detail and approach that I wouldn’t have done otherwise!

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Technorati Tags:

SharePoint siyahısı / Document Kitabxana Views təmin görünür (növ) JQuery ilə mümkündür

Bu, mənim bir yazı deyil seriyası davam istifadə etmək üçün jQuery SharePoint ilə.
Siz jQuery haqqında daha çox öyrənmək istəyirsinizsə,, Mən tövsiyə: Fəaliyyət ilə jQuery Bear Bibeault və Yehuda Katz ilə.

Fikirləşdim ilk şey biri, bir dəfə mən jQuery ilə ətrafında oynamağa başladı, was whether we could use it to secure a SharePoint view. The answer is “no” (və ya ən azı, Mən bunu mümkün iddia deyiləm). Lakin, it is certainly possible to make it difficult for people to see a particular view.

I started with my sandbox environment when working on this. I wrote about that environment here: Tez və asan: SharePoint üçün öz jQuery Sandbox yarat.

Baxımından "təmin etmək", aşağıdakı adımları baxın:

  1. Create a view you want to secure. I did that and called it “Secured View”.

    Bu "təmin" deyil zaman kimi görünür nə:

    image

  2. Ki, Sandbox məqalədə təsvir oyun istifadə edərək görünüşü page content redaktoru Web Part əlavə et (i.e. "sahifada görünüşü = Paylaşılan əlavə et&URL-yə ToolPaneView = 2 ").
  3. Figure out your SharePoint _spUserId by following these crazy steps, iman və ya deyil:
    1. Sizin SharePoint mühit daxil ol.
    2. Web brauzer ünvan sahədə, növü: "Javascript:zirək(_spUserId ").
    3. Nəticədə qeyd (mənim halda "13" var).

      image

  4. Kodu görünümünde CEWP üçün aşağıdakı javascript əlavə et:

    <ssenari
        "text/javascript"
        src ="../../jQuery%20Library/jquery-1.3.2.min.js">
    </ssenari>
    
    <script type ="text/javascript">
      $(funksiyası() {
    
        zirək(_spUserId);
    
        oldu theSecuredView = $("Iframe[FilterLink * = Təminatlı% 20View]');
    
        əgər ((theSecuredView.length > 0) && (_spUserId == 13))
          $("Iframe[FilterLink * = Təminatlı% 20View]').valideyn().valideyn().valideyn().html("<tr bgcolor = red><TD>Sizə heç bir görünüşü!</TD></tr>");
      });
    
    </ssenari>
    

Mən daxil olduğunuz alert(_spUserId) Bu, həqiqətən bir baxış "təmin" deyil necə nümayiş etdirmək üçün orada xətt, but simply making it more difficult to see. More on that in a moment.

Əsasən, jQuery is looking for an iFrame on the page who has an attribute that contains “Secured View” in its value. Once it finds it, we check to see if the current user is “13”. If it is, biz üçün DOM qədər gəzmək <TR> tag (I mənbə görüntülerken və bu axtarış tərəfindən həyata fiqurlu) və sonra mənim mesajı ilə TR tag əvəz. Mən, həqiqətən, bu necə sağlam bilmirəm (Mən çox şübhəli Ben, faktiki olaraq), but it worked in my sandbox. If I find a better way, Mən bu barədə blog lazımdır. Bu nəticə:

image

Mən OK düyməsini basın və məlumat böyük qırmızı mesajı ilə əvəz olunur:

image

Siz deyə bilərsiniz kimi,, the way I’ve implement this “security” solution is to allow the web part to render itself. After it finishes, Mən sizə mənim "No baxımından onun məzmunu yazmaq!"Mesajı.

Bu, həqiqətən bir "təhlükəsiz" görünüşü deyil ki, baxmayaraq, O potensial faydalı və bəzi ağıllı iş ilə var, it may eventually be securable in a more formal sense. The fundamental issue is that the client is getting all the data and then, bu məlumatların əldə sonra, it wipes it out. If the client is getting the data, bir ağıllı istifadəçi bütün çalışan olan jQuery qarşısını almaq və o / o görmək istəyir nə edə bilərsiniz.

There are other drawbacks. This “security” approach is based off a _spUserId. We’d want to really secure based on the full SharePoint security model, or at least by user name. That becomes progressively harder, amma bu mövzuda yazılı yaxşı keçirmək, mən ki, problem yaxşı bir cavab var ümidliyəm.

Özləri işlənmiş edilməlidir fikir siyahısı, if possible. I haven’t tried to figure that out. I assume it’s possible, kimsə hələ yalnız istədikləri baxımından URL yazın bilər, çünki, lakin həqiqətən fundamental təhlükəsizlik problemi həll etmir (onlar bilirdi, əgər). Lakin, trimming makes sense. It’s a good usability feature and it helps to obfuscate things. If an end user doesn’t know that the view event exists, they probably won’t try to use it. Bəzən, ki, kifayət qədər yaxşı.

Luck ilə, Mən vaxt keçdikcə bu mövzuda yazmaq üçün daha çox lazımdır.

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Tez və asan: SharePoint Form bir mətn sahəsində gizlətmək jQuery istifadə daha yaxşı bir şəkildə

Bu, mənim bir yazı deyil seriyası davam istifadə etmək üçün jQuery SharePoint ilə.
Siz jQuery haqqında daha çox öyrənmək istəyirsinizsə,, Mən tövsiyə: Fəaliyyət ilə jQuery Bear Bibeault və Yehuda Katz ilə.

Əvvəl, I wrote about how to use jQuery to locate and hide a text field on a form. I didn’t care for the specific approach (Mən chaining valideynləri idi - sadəcə bu gün həyata deyilmi, ən azı keyfiyyətli ailələrində).

Mən ilk bu barədə düşünmək başlayanda, Mən tapmaq üçün lazım bilirdi <TR> to which I could invoke the hide() üsul. My early effort to find the correct <TR> bu kimi bir şey:

$('Tr:var(giriş[title = Me Gizlət!])');

Ki, problem hər tapmaq olardı ki, <TR> tag that had any parent relationship to the Hide Me! sahə, Məni gizlət hətta! dərin bir çox səviyyələrdə iç içə edir <TR>’s. It turns out that on my sandbox form, ifadə tapır 9 Məni gizlət olan müxtəlif TR Agentliyi! as a child somewhere in its DOM tree. I realized that I could walk back up the tree from the input field itself, belə ki, sui-valideynləri qədər başa necə, lakin bu, mənim yaxşı oturmaq etməyib.

Mən nəhayət edilmiş mənada oxumaq bu və bir şeyi bəzi fikir verdi: Mən istifadə edə bilmədi() həyata kəsmək üsulu <TR>’s I don’t want in my wrapped set. Bu məni gətirib:

$('Tr:var(giriş[title = Me Gizlət!])').yox('Tr:var(tr)').gizləmək();

İlk bit bütün tapır <TR> Me gizlət ki tags! field anywhere in their own hierarchy. It then strips out any <TR> də bir uşaq var ki, <TR>. This leaves us with a single <TR> o:

1) Yoxdur <TR> uşaq qeydlər

2) Does have the input field as child.

Daha sonra saxla müraciət edə bilər() nəticəsində set və biz tamamlayın üsulu.

Mən hələ bu barədə bir az sinir Ben, chaining valideynləri kimi həm sinir deyil.

I don’t know if this is a best practice or not. There may be a more appropriate way of identifying just the <TR> that we care about in a SharePoint form. If you know, Şərh göndərin.

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Tez və asan: SharePoint Form bir mətn sahəsində gizlətmək jQuery istifadə

Bu, mənim bir yazı deyil seriyası davam istifadə etmək üçün jQuery SharePoint ilə.
Siz jQuery haqqında daha çox öyrənmək istəyirsinizsə,, Mən tövsiyə: Fəaliyyət ilə jQuery Bear Bibeault və Yehuda Katz ilə.

UPDATE (artıq!): Mən tapmaq üçün daha yaxşı yol hesab etməyib <TR> Mən gizlətmək və istədiyiniz tag burada yazıb. You may still find this article interesting anyway so I’m leavnig it up.

Mən bir metin domain gizlətmək istəyirsinizsə, "Məni gizlət!"Kimi göstərilir:

image'

Aşağıdakı jQuery mənim üçün oyun edir:

<script type ="text/javascript">

  $(funksiyası() {


    $('Input[title = Me Gizlət!]').valideyn().valideyn().valideyn().gizləmək();

  });

</ssenari>

Kod deyib, "Mənə onun title = Me gizlət bütün giriş sahələrdə tapmaq!. Sonra, ana və sonra növbəti valideyn və * növbəti * valideyn almaq (Phew!) və saxla ibadət() ki, şey üsulu, bu olur nə.

Mən SharePoint kimi göstərilən yaratdığı forması üçün HTML görüntülerken ki, valideyn struktur fiqurlu:

<TR>
    <TD Kaydırma yok="true" valign="top" en="190px" sinfi="ms-formlabel">
        <H3 sinfi="ms-standardheader">
            <nobr>Məni gizlət!</nobr>
        </H3>
    </TD>

    <TD valign="top" sinfi="ms-formbody" en="400px">
        <!-- FieldName="Hide Me!"
                 FieldInternalName="Hide_x0020_Me_x0021_"
                 FieldType="SPFieldText"
        -->
        <aşırım siz="none">
            <giriş
                ad="ctl00$m$g_bdb23c2c_fde7_495f_8676_69714a308d8e$ctl00$ctl04$ctl02$ctl00$ctl00$ctl04$ctl00$ctl00$TextField"
                növü="text"
                maxlength="255"
                id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                başlıq="Hide Me!"
                sinfi="ms-long" />
                <br>
        </aşırım>


    </TD>
</TR>

Bu şəkil eyni göstərir, lakin valideynləri ilə qeyd:

image

İlk valideyn (1) is a span tag. Span’s parent (2) bir TD tag və sonra nəhayət biz gizlətmək istəyirsinizsə real valideyn almaq (3) olan TR tag özü.

This is a pretty terrible approach I think because it’s extremely dependent on the very specific structure of this form. When SharePoint 2010 çıxır, this whole structure could change and break this approach. What I really want to do is craft a jQuery selector that is along the lines of “find me all the TR’s (və yalnız TR tags) haradasa onların uşaq elementləri olan title = Me gizlət giriş sahədə ki!". I starting from the bottom and moving up. Assuming I figure this out, Mən yenilənir "tez və asan 'post yazmaq lazımdır.

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin

Tez və asan: SharePoint üçün öz jQuery Sandbox yarat

Bu, mənim bir yazı deyil seriyası davam istifadə etmək üçün jQuery SharePoint ilə.
Siz jQuery haqqında daha çox öyrənmək istəyirsinizsə,, Mən tövsiyə: Fəaliyyət ilə jQuery Bear Bibeault və Yehuda Katz ilə.

SharePoint ildə jQuery Başlarken təəccüblü asandır (mənə). (Mən istehsal bu şeylər yerləşdirilməsi üçün "ən yaxşı təcrübə" yanaşma haqqında ciddi suallar var, amma ki bir gün var). I’ve just started playing with this technology and to that end, I created a sandbox environment to use. If you’re looking to get started with jQuery, Bu yanaşma faydalı ola bilər.

1. Boş site yaratmaq

Saytınıza haradasa boş bir site yaratmaq və "jQuery Sandbox" kimi ağıllı bir şey zəng.

2. JQuery Download

Buradan jQuery javascript kitabxana yükləyə bilərsiniz: http://docs.jquery.com/Downloading_jQuery

Masa üstü üçün Saxla.

Mən "minified" versiyasını istifadə edilmişdir.

3. SharePoint Document Kitabxana yarat

Sizin Sandbox saytda, create a document library.

4. SharePoint üçün jQuery Kitabxana yüklə

Yaratdığınız doc kitabxana daxil ol və jQuery kitabxana yüklemek.

5. Xüsusi SharePoint siyahısı yaradın

I’ve started with a custom list because I want to muck about with standard SharePoint forms. You could also create a page in a pages library or web part pages and probably a lot of other places.

Add some columns to the custom list so that you have something to run jQuery against. My initial objectives were to:

  1. Bir sahəsində gizlət.
  2. Bir sahəsində bir dəyər təyin.

Nəzərə ki məqsədi ilə, I added two text fields. Zamanla, Mən links ilə oynayan olacaq, şəkillər, lookups, və s..

6. Ki, NewForm.aspx Web Part Page dəyişdirin və məzmun Redaktor Web Part əlavə et

Bu, bir az qara sehrli-ish deyil , in that it’s a new concept to me. I first learned about this from Paul Grenier, SharePoint jQuery Superstar, onun CodePlex layihə saytda: http://spff.codeplex.com/.

Hər hansı bir xüsusi siyahısı üçün NewForm.aspx göstərir ki, həmin səhifə üçün bir CEWP əlavə etmək üçün aşağıdakı adımları baxın:

  1. Xüsusi siyahısına daxil və Yeni basın.
  2. URL üçün aşağıdakı əlavə: Sahifada görünüşü = Paylaşılan&ToolPaneView = 2

Bu kimi bir şey sizin qazma vanil data giriş forması çevirmək ki,:

image

Bu:

image

Səhifə içeriği redaktoru Web Part əlavə et.

7. Sizin ilk jQuery kodu yazmaq

Kodu görünüşü ki CEWP açmaq və aşağıdakı əlavə edin:

image

Siz yapışdırıb / surəti istəyirsinizsə, burada faktiki kod:

<ssenari
    "text/javascript"
    src ="../../jQuery%20Library/jquery-1.3.2.min.js">
</ssenari>

<script type ="text/javascript">
  $(funksiyası() {

    $('# ResultsID').html("Var" + $('A').boy() + 'Bu səhifədə tags tags.);

  });
</ssenari>

Nəticə:
<div id ='ResultsID'></div>
/nəticə

Qeyd edək ki, ilk <ssenari> tag is referencing the actual jQuery library. Presumably, bu şeyi dəyişə, belə ki, siz əmin etmək lazımdır) doğru adı və b istifadə) doğru SharePoint sənəd kitabxana üçün qeyd.

Şöhrət Bask

Doğru yaptıysanız, aşağıdakı bənzər bir nəticə görürsünüz:

image

Up wrapping

Bu başlamaq üçün yeganə yolu deyil, lakin o tez var, easy and isolated from your existing SharePoint environment.

</son>

Blog abunə.

Da Twitter məni izləyin http://www.twitter.com/pagalvin