שנעל און סימפּלע: טנייַ אַ וועבסזייַטל וסינג שאַרעפּאָינט אָבדזשעקט מאָדעל אין C #

I tried searching for a little snippet code that would show how I can create a new SPWeb in a site collection. I didn’t find it as quickly or easily as I expected so I thought I’d slap together a little entry on the subject.

דעם קאָד קריייץ אַ נייַ וויקי פּלאַץ:

 ספּסיטע סיטעקאָללעקטיאָן;

    סיטעקאָללעקטיאָן = נייַ ספּסיטע("http://קאָנטשאַנג-אָ9ל8קי");

    ספּוועב וו = סיטעקאָללעקטיאָנ.אָפּענוועב();

    וו.וועבס.אַדד("xyzzy", "xyzzy Title",
        "xyzzy description", 1033, ספּוועבטעמפּלאַטע.וועבטעמפּלאַטעוויקי, פאַלש, פאַלש);

My initial searches failed because I was looking for phrases like "provision a web site using sharepoint object model" and the like.

אויב איר זוכן for "Webs.Add()", איר וועט געפינען אַ נומער פון זייער נוציק בלאָג איינסן, MSDN articles and SDK documentation that go into depth on this subject. I definitely recommend דעם פּלאַץ.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

ויסשטימען שאַרעפּאָינט דיזיינער וואָרקפלאָווס מיט וועב סערוויסעס

איך ווע שוין פּלייינג אַרום מיט מנהג אַקשאַנז פֿאַר שאַרעפּאָינט דיזיינער פֿאַר עטלעכע מאָל (זען דאָ פֿאַר עטלעכע דיטיילד שטאָפּן, אויב אַז אינטערעסן איר).

אין מיין קראַנט פּרויעקט, we need to do some fairly heavy lifting and we want to use declarative SPD workflow to manage the associated business process.

לאנג געשיכטע קורץ, this is entirely possible. I extended my Codeplex project to invoke a "helper service" and now we can invoke a web service directly from an SPD workflow.

דאָ ס דער כסימע:

 עפנטלעך שטריקל דיספּאַטטשער(
        גויד WebID, // דורכגעגאנגען דורך דעם רונטימע סוויווע
        גויד סיטעיד, // דורכגעגאנגען דורך דעם רונטימע סוויווע
        שטריקל ליסטיד, // דורכגעגאנגען דורך דעם Rte (טאָן ניט וויסן וואָס דאָס איז אַ שטריקל, נישט אַ גויד)
        ינט ליסטיטעמיד, // דורכגעגאנגען דורך דעם Rte.
        שטריקל קסמלמעססאַגע) // דורכגעגאנגען דורך די באַניצער ווי דערקלערט אין ספּד.

דאס לעוועראַגעס די פאַקט אַז מיר קענען באַקומען בייַ וויכטיק וואָרקפלאָוו אינפֿאָרמאַציע, ווי די פּלאַץ, רשימה שייַן, אאז"ו ו. This is well documented in several places for those of you interested in creating your own custom actions. The idea is to extract the XML string as provided by the user to dispatch an appropriate procedure. Fun stuff!

סאַדלי, דאָס איז דאָך אַ איין-וועג בילעט אַראָפּ צו "Loosey Goosey" אַנטי-מוסטער לאַנד, but it’s better than hitting a brick wall 🙂

איז עס אַ אַנטי-מוסטער אויב איר טאָן עס אַפֿילו כאָטש איר וויסן עס ס אַן אַנטי-מוסטער?

I hope to wrap this inside Codeplex in the near future. If you’re interested in me doing so, געבן מיר שטורכען (Email אָדער לאָזן אַ באַמערקונג) and I’ll be that more enthusiastic about doing it 🙂

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס: ,

זונטיק מאָדנע: “איך ווונדער אויב דיין Password איז …”

איך לעצטנס געקויפט לאָנטש פֿאַר מיין ברודער (ווי געוויינטלעך) and we ended up talking about funny things that we did at our respective colleges. At my alma mater, לאַפיעט קאָלעדזש, the academic support IT department had a very inclusive way about it. We were given a LOT of rope and I took advantage of that at times.

צוויי מיין באַליבט מעמעריז פאַרבינדן צו מיין גוט פרייַנד, Gabe. He had made the terrible mistake of telling people his freshman year that "I’m a freshman, אָבער איך האָבן סאָפאָמאָרע שטייענדיק" רעכט צו די פארשידענע אַוואַנסירטע פּלייסמאַנט קלאסן ער האט גענומען, אאז"ו ו. Many of us were similarly situated but we didn’t talk about it so much. His senior year, ווען מיר באַקענענ אים צו מענטשן, we’d say "This is Gabe. He’s a Senior, but he has Sophomore standing".

The college had some Sun workstation/servers running X-Window. They had gigantic monitors and the engineers used them for CAD and other boring engineer stuff. We CS people used them to learn programming and, אַוואַדע, צו שפּילן גאַמעס.

מיר האבן ניט ווי די קאָמפּיוטער-אָפענטיק ענדזשאַנירז צו פיל אַזוי איינער פון אונדזער באַליבט דאס צו טאָן וואָלט זייַן צו טעלנעט צו די קאַסטן זיי זענען אויף און לויפן X-אויג on them. This would pop up a pair of eyes that followed the mouse around on the screen. You could pop up even more and have literally a dozen or more of the X-eye applications running. Try not to laugh out loud when a hapless engineer is trying to close X-eye after X-eye and muttering under his breath about it 🙂

We also played X-trek on those boxes. צו טאָן וואָס, איר האט צו אָפּלאָדירן די מקור, get various dependencies wherever you could find them and build it. I wasn’t a sophisticated C programmer, but I could read header files. I was looking through these and found directives like "#DEFINE MAX_TORPEDO_DISTANCE 10". I played around with that increase range and power for phases and torpedoes, שייַעך-געבויט עס און דעמאָלט חרובֿ גאַבע דער ווייַטער צייַט מיר געשפילט.

גאַבע איז געווען אויך אַ ריזיק פאָכער פון אַ טעלעוויזיע ווייַזן גערופן בלייק ס 7. I had never seen it, אָבער וואָס האט נישט פאַרמייַדן מיר פון ינסיסטינג אַז דר. Who is the superior show. The arguments would get heated at times 🙂

יינ מאָל, it occurred to me that I could probably guess his UNIX password. I sat down next to him one day and announced in a loud tone, "I’m going to guess your password right now, Gabe." "Yeah, רעכט" was his answer. I then logged in, אריין זייַן באַניצער שייַן, פארקערט צו פּנים אים, טייפּט און האט אויס הויך, "I wonder if it’s B-L-A-K-E-7" ? Touch typing has never paid off as handsomely as it did that day.

ווייַטער וואָך (אָדער באַלד): More computer room antics from college.

צי איר האָבן קיין צו טיילן? Leave a comment or email me and I’ll publish them here.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

מינערווערטיק פּובליק אַנאַונסמענט: פֿענצטער לעבן זיכערהייַט סעטטינגס און קאָנטאַקטינג ספעיס אָוונערס

I receive a handful of messages from individuals via the built-in "send a message" פונקציאָנירן מייקראָסאָפֿט גיט מיט לעבן ספּייסיז (וואָס אויך מחנות מיין בלאָג) יעדער חודש.

וועגן 1/3 פון די צייַט, those users have secured their live spaces account such that I cannot reply. This is some kind of anti-spam feature I assume.

</עק>

פּשוט עקספּלאַנאַטיאָן: “ווערט טוט נישט פאַלן ין דער געריכט קייט.”

דערהייַנטיקן: An anonymous poster left a great comment about internal names. Be sure to read it.

ווען ארבעטן מיט געשעעניש ראַסיווערז און אנדערע קאָד וואָס באַווייַזן שאַרעפּאָינט רשימה זאכן דורך דער כייפעץ מאָדעל, איך אָפֿט מאַכן מיסטייקס אַז דזשענערייט דעם טעות בייַ רונטימע:

טעות Loading און פליסנדיק געשעעניש ופנעמער קאָנטשאַנגאָ.קסיזזיעווענטרעסעיווער אין קסיזזי, ווערסיע = 1.0.0.0, קולטור = נייטראַל, פּובליקקייטאָקען = 0דק50אַ750396ק3אַק. Additional information is below. : Value does not fall within the expected range.

I think this is a fairly generic error that is potentially caused many different ways. אָבער, one simple explanation is that I’m referencing a field incorrectly. If the name of the field is "Due Date", איך מוזן דערמאָנען עס ווי דעם אין אַ געשעעניש ופנעמער:

פּראָפּערטיעס.ליסטיטעם["Due Date"]

ווען איך מיספּעל אָדער נוצן דעם אומרעכט פאַל ווען רעפראַנסינג די פעלד, SharePoint generates the above mentioned runtime error. לעמאָשל, דאָס איז פאַלש:

פּראָפּערטיעס.ליסטיטעם["due Date"]

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

סוף באַניצער שנעל טיפּ: סאָרט קוקן אין אַ דאָקומענט ביבליאָטעק, רעשימע, אאז"ו ו.

מיר קענען, זאָל און טאָן מאַכן פילע קוקן אין שאַרעפּאָינט רשימות (דאָקומענט לייברעריז, מנהג רשימות, אאז"ו ו). SharePoint always lists available views in alphabetical order. We cannot change this using out of the box functionality. If it can be done via customization (און איך בין נישט זיכער עס קענען), עס ס 'ווייַט צו טעכניש פֿאַר דיין טיפּיש סוף באַניצער.

אויב איר ווילן צו קאָנטראָלירן דעם סדר אין וואָס שאַרעפּאָינט רשימות פאַראַנען קוקן, פשוט פּרעפּענד אַ נומער אָדער בריוו צו דער מיינונג נאָמען, ווי אין:

1 – דורך מאַטעריאַל טיפּ
2 – כל דאָקומענץ
3 – רעכט טאָג

-אָדער-

א – דורך מאַטעריאַל טיפּ
ב – כל דאָקומענץ
C – רעכט טאָג

I have also created views whose purpose is strictly to feed a KPI. I have been following this naming convention:

ז_קפּי_[באַשרייַבונג]

That causes my "KPI" קוקן צו דערשייַנען אין די דנאָ פון דער רשימה.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס: ,

זונטיק מאָדנע: “ווען איך געווען אַ קליין יינגל”

ווי אַ פאָטער, somewhere along the line I discovered the "When I was a little boy" trick.

מייַן זון, מיסטאָמע פיר אָדער פינף אין די צייַט, איז פּלייינג אַ באַלאָן און ווי רובֿ ביסל יינגלעך וואָס שפּילן מיט באַלונז, he popped it. He was very upset. The world had come to an end. I said to him, "when I was little boy, איך האט אַ באַלאָן און עס פּאַפּט און יווענטשאַוואַלי, I got a new balloon." It seemed to help him cope with his loss and led to a fun talk about what it was like when I was a little boy.

That worked well as a consolation technique and I used it a several times over the next period of time. I did get into trouble once when his Monster Rancher 3 creature died. I talked about how my dog, פּרינץ, had died in a car accident. דאס מאָל, זייַן ענטפער איז געווען, "Now I feel bad about two things!" I shied away from using the "when I was a little boy" טעכניק פֿאַר טרייסט נאָך אַז.

איידער די טויט הונט אינצידענט, אָבער, I had also started to use the technique to convince him to do chores. "When I was a little boy, I had to go out and get the newspaper", "clean my room", "get Mommy her coffee cup", אאז"ו ו.

דאס אויך איז געווען שיין מצליח פֿאַר אַ בשעת, but he started to increasingly rebel against the tyranny of my childhood. One event, אין באַזונדער, marked the end. I told him to bring the garbage cans from curb back to the garage. He argued and I responded, "When I was a little boy, I had to take the garbage back to the garage." He responded, "Oh yeah! Well when you were a little boy, וואָס איז געווען נאַריש!".

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

קוקן און שפאלטן אויף ליס און דאָקומענט וספריות קענען ניט זיין סעקורעד

דערהייַנטיקן (02/29/08): דאס נייַ קאָדעפּלעקס פּרויעקט מיינט צו צושטעלן אַ אופֿן פֿאַר סיקיורינג יחיד שפאלטן: http://www.codeplex.com/SPListDisplaySetting. If you have any experience working with it, ביטע לאָזן אַ באַמערקונג.

פורום פּאָסטערס אָפט פרעגן אַ קשיא ווי דעם: "I have a manager view and and a staff view of a list. How do I secure the manager view so that staff can not use it?"

זיי אויך אָפט פרעגן אַ שייַכות קשיא: "I want to secure a specific metadata column so that only managers may edit that column while others may not even see it."

These answers apply to both WSS 3.0 און מאָך:

  • שאַרעפּאָינט טוט נישט צושטעלן אויס-פון-דעם-קעסטל שטיצן פֿאַר סיקיורינג קוקן.
  • שאַרעפּאָינט טוט נישט צושטעלן אויס-פון-דעם-קעסטל שטיצן פֿאַר זיכערהייַט שפאלטן.

There are several techniques one can follow to meet these kinds of security requirements. Here’s what I can think of:

  • Use out-of-the-box item level security. Views always honor item level security configuration. Event receivers and/or workflow can automate security assignment.
  • Use personal views for "privileged" קוקן. These are easy enough to set up. אָבער, due to their "personal" נאַטור, these need to be configured for each user. Use standard security configuration to prevent anyone else from creating a personal view.
  • ניצן אַ דאַטן מיינונג וועב טייל און ינסטרומענט עטלעכע מין פון אַדזשאַקסי זיכערהייַט טרימינג לייזונג.
  • זעמל דיין אייגן רשימה אַרויסווייַזן פאַנגקשאַנאַליטי און ינקאָרפּערייט זיכערהייַט טרימינג בייַ די זייַל מדרגה.
  • מאָדיפיצירן די דאַטן פּאָזיציע פארמען און נוצן דזשאַוואַסקריפּט אין קאַנדזשאַנגקשאַן מיט די זיכערהייַט מאָדעל צו ינסטרומענט זייַל-מדרגה זיכערהייַט טרימינג.
  • Use an InfoPath form for data entry. Implement column-level security trimming via web service calls to SharePoint and conditionally hide fields as needed.
  • זעמל דיין אייגן ASP.NET דאַטן פּאָזיציע פונקציאָנירן אַז ימפּלאַמאַנץ זייַל מדרגה זיכערהייַט טרימינג.

קיינער פון די אָפּציעס זענען טאַקע אַז גרויס, אָבער עס איז לפּחות אַ דרך צו נאָכפאָלגן אויב איר דאַרפֿן צו, אַפֿילו אויב עס ס שווער.

נאָטיץ: אויב איר גיין אַראָפּ קיין פון די פּאַטס, don’t forget about "Actions -> Open with Windows Explorer". You want to be sure that you test with that feature to make sure that it doesn’t work as a "back door" און באַזיגן דיין זיכערהייַט סכעמע.

אויב איר האָבן אנדערע געדאנקען פֿאַר אָדער יקספּיריאַנסיז מיט סיקיורינג שפאלטן אָדער קוקן, ביטע Email מיר אָדער לאָזן אַ באַמערקונג און איך וועט דערהייַנטיקן דעם פּאָסטינג ווי צונעמען.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

שנעל טיפּ: בדק ADF ווערסיע נומבערס ביסט אייער פריינט

אויב איר ניטאָ האַנט-קאָודינג ADF טעקעס און טאן אַ פּלאַץ פון קאָד / אַרייַנפיר / פּרובירן סייקאַלז, use the version number to make your life easier.

איך האַס צו אַרייַנלאָזן עס, אָבער ביז דעם וואָך, I was always deleting the ADF and re-importing it. This would break my business data columns and make me re-wire them. All unnecessary.

File this under "it’s obvious once you see it".

בייַשפּיל:

<לאָבסיסטעם
קסמלנס:קססי="הטטפּ://www.w3.org/2001/XMLSchema-instance" קססי:סטשעמאַלאָקאַטיאָן="הטטפּ://schemas.microsoft.com/office/2006/03/BusinessDataCatalog בדקמעטאַדאַטאַ.קססד" טיפּ="וועבסערוויסע" ווערסיע="1.2.0.0" נאָמען="קסיזזידאָקומענטרעוויעוו" קסמלנס="הטטפּ://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">

טוישן אַז ווערסיע און שייַעך-אַרייַנפיר און דער שאַפֿן געשעפט דאַטן זייַל ניצט די דערהייַנטיקט ווערסיע אויטאָמאַטיש מיט קיין נאָך קאַנפיגיעריישאַן פארלאנגט.

</עק>

אַבאָנירן צו מיין בלאָג.

טעטשנאָראַטי טאַגס:

באַשייד: בדק פּיקקער שאָווס בלויז איין זייַל פון רעזולטאַטן

אין מיין אויף-געגאנגען פרווון בייַ ערלויבעניש אַ מער נוצלעך לאָאָקופּ זייַל ניצן בדק, I hit a wall with the BDC picker. If you haven’t see it, the BDC picker is similar to a people picker except that it works with columns of type "business data".

איר צוטריט די פּיקקער דורך געבן אַ קליק אויף די עפענען בוך בילדל פון אַ געשעפט דאַטן זייַל ווי געוויזן:

בילד

The above image shows a business data column called "Master Document Id". That column is connected, דורך בדק, to a web service. The web service returns two columns of information: Document ID and Title. The business purpose here is to provide a "this document is based on" פונקציע. Users select a "master" דאָקומענט און ווען זיי ראַטעווען, אַ געשעעניש ופנעמער קאפיעס מעטאַ דאַטן פעלדער פון די רעפראַנסט בעל.

דורכ פעליקייַט, the BDC picker looks like this when I search for a document whose ID = "38":

clip_image002

אַז ס נוציק, but not good enough. People don’t think in terms of IDs, they think in terms of titles and/or other meta data. The picker allows you to search on other columns (e.g. טיטל) אָבער וועט נישט ווייַזן די פאַקטיש רשימה פון טיטלען עס געפונען, נאָר זייער דאָסיד ס ווי געוויזן דאָ:

clip_image002[1]

(די פאַרשטעלן שאָס איז ניט אַזוי גרויס ווייַל איך האט ניט קלייַבן אַ זוכן וואָס קערט קיין גילטיק רעזולטאַטן, אָבער איר קענען זען אַז אויב עס האט געפונען עטלעכע רעזולטאַטן, עס וואָלט נאָר האָבן געוויזן דאָסיד ס, ניט טיטלען).

I searched high and low for the answer to this and failed. מייַן קאָלעגע, די געאַכט יונתן בראַדשאַוו, had faced and solved this issue. When I reached out to him for help, ער שפּיציק מיר אין די רעכט ריכטונג.

Configure the picker to show multiple columns via the "ShowInPicker" פאַרמאָג אין די ADF:

<פאַרמאָג נאָמען="שאָווינפּיקקער" טיפּ="סיסטעמ.באָאָלעאַן">ריכטיק</פאַרמאָג>

אין מער דעטאַל:

  <!-- טיטל -->
  <טיפּעדעסקריפּטאָר טיפּענאַמע="סיסטעמ.סטרינג" נאָמען="טיטל" >
    <לאָקאַליזעדדיספּלייַנאַמעס>
      <לאָקאַליזעדדיספּלייַנאַמע לסיד="1033">טיטל</לאָקאַליזעדדיספּלייַנאַמע>
    </לאָקאַליזעדדיספּלייַנאַמעס>
    <פּראָפּערטיעס>
      <פאַרמאָג נאָמען="דיספּלייַבידעפאַולט" טיפּ="סיסטעמ.באָאָלעאַן">ריכטיק</פאַרמאָג>
      <פאַרמאָג נאָמען="שאָווינפּיקקער" טיפּ="סיסטעמ.באָאָלעאַן">ריכטיק</פאַרמאָג>
    </פּראָפּערטיעס>
  </טיפּעדעסקריפּטאָר>

Setting this property does introduce a minor problem. As soon as you set it once, you need to set it for every column you want to show. אין מיין פאַל, BDC picker showed DocId by default. אָבער, once I added "ShowInPicker" צו ענין, DocId no longer displayed. I solved that by explicitly setting the ShowInPicker property for Doc ID.

דאָ איז דער רעזולטאַט:

בילד

(I’ll explain the odd-looking "168 – קאַמלסטשעמאַ.קססד" construction in a future blog post. In short, עס ס אַ קאַנקאַטאַנייטאַד שטריקל וואָס אַלאַוז פֿאַר אַ ביסל בעסער באַניצער דערפאַרונג).

אַוואַדע, בעת געשריבן דעם בלאָג פּאָזיציע, I just did a search for "ShowInPicker" און געפונען סך היץ, אַרייַנגערעכנט דעם איין: http://msdn2.microsoft.com/en-us/library/ms583986.aspx. It explains the meaning of that property along with some other good BDC stuff.

</עק>

אַבאָנירן צו מיין בלאָג!

טעטשנאָראַטי טאַגס: