jQuery selectors

by Piotrosz 26. August 2010

Tags:

jQuery

WSS: Pobranie wartości z profilu użytkownika

by Piotrosz 22. July 2010
Metoda odczytująca wartość z listy informacji o użytkowniku w WSS:
string GetValueFromUserProfile(SPWeb web, SPUser user, string fieldName)
{
    var result = string.Empty;
    if (web != null && user != null && !string.IsNullOrEmpty(fieldName))
    {
        SPListItem userItem = web.SiteUserInfoList.GetItemById(user.ID);
        if (userItem.Fields.ContainsField(fieldName))
        {
            SPField field = userItem.Fields.GetFieldByInternalName(fieldName);
            if (field != null && userItem[field.Id] != null)
                result = userItem[field.Id].ToString();
        }
    }
    return result;
}
Przykład użycia:
SPUser user = SPContext.Current.Web.AllUsers["domena\\jan"];
SPWeb web = SPContext.Current.Web;
string wiek = GetValueFromUserProfile(web, user, "Wiek");
string kolorOczu = GetValueFromUserProfile(web, user, "Kolor_x0020_oczu");

Odczyt wartości z pola SPFileldMultiChoice

by Piotrosz 20. July 2010
Odczytanie kolekcji wartości z pola typu SPFieldMultiChoice do listy List:
var animals = new List<string>();
if (item["Animals"] != null)
{
    var multiChoiceValues = new SPFieldMultiChoiceValue(item["Animals"].ToString());
    for (int i = 0; i < multiChoiceValues.Count; i++)
        animals.Add(multiChoiceValues[i]);
}
item - to obiekt typu SPListItem, czyli element (wiersz) jakieść listy SharePoint.

Rusyfikacja

by Piotrosz 10. July 2010
Zauważyłem, że wiele osób uczących się rosyjskiego nie wie jak wpisywać rosyjskie literki w Windows lub robi to w dziwny i niewygodny sposób. Może się komuś przyda.

Aby wpisywać rosyjskie litery w Windows należy:

1. Dodać sobie rosyjską klawiaturę. W Windows 7: Panel sterowania -> Region i język -> Klawiatury i języki -> Zmień klawiatury.



Pomiędzy językami można przełączać się zdefiniowanym w powyższym okienku skrótem klawiszowym (domyślnie: Alt + Shift) lub myszką w pasku języka:



2. Uruchomić klawiaturę ekranową Start -> Uruchom -> Osk lub Start -> Akcesoria -> Ułatwienia dostępu -> klawiatura ekranowa.
Klawiatura ekranowa umożliwia wpisywanie rosyjskich liter poprzez klikanie myszką na odpowiednie 'klawisze'.
Oczywiście można również zmiast używania osk kupić sobie rosyjską klawiaturę lub nalepki na polską klawiaturę!




Rusyfikacja Ubuntu

Bardzo ciekawe jest zrusyfikowanie Ubuntu. Wystarczy doinstalować odpowiedni pakiet językowy:

i dodać rosyjski układ klawiatury:




Внимание! W runecie trzeba uważać:


Przydatne linki:

Dodawanie własnego typu pola do SPList

by Piotrosz 18. June 2010
Wbudowany typ pola (kolumny), taki jak "Note", "Text" lub "Boolean" można dodać do listy (Microsoft.SharePoint.SPList) na przykład w następujący sposób:
if(!list.Fields.ContainsField("MojaNazwaPolaInternal"))
{
    list.Fields.Add("MojaNazwaPolaDisplay", SPFieldType.Note, false);
    list.Update();
}
czyli z wykorzystaniem typu wyliczeniowego SPFieldType w argumencie. Aby dodać własny typ pola (custom field type) do listy poprzez object model trzeba skorzystać z innego sposobu, bez posługiwania się SPFieldType:
if (!list.Fields.ContainsField("MojaNazwaPolaInternal"))
{
    SPField myField = list.Fields.CreateNewField("MojePole", "MojaNazwaPolaInternal");
    list.Fields.Add(myField);
    list.Update();
}
"MojePole" to type name określone w katalogu 12\TEMPLATE\XML, w pliku XML, który zgodnie z konwencją powinien mieć nazwę rozpoczynającą się od fldtypes:
<FieldTypes>
	<FieldType>
		<Field Name="TypeName">MojePole</Field>
		<Field Name="ParentType">Text</Field>
		...
	</FieldType>
</FieldTypes>
Klasa SPField ma właściwość TypeAsString, dzięki której można odróżnić typ nowego pola, np:
foreach (SPField field in list.Fields)
{
    if (field.TypeAsString == "MojePole")
    {
        // Rób coś
    }
}

Timer job w WSS

by Piotrosz 16. June 2010
Luźne fragmenty kodu związane z timer jobs w WSS. (Po dokładną dokumentację należy sięgnąć na przykład tutaj)

Dodawanie timer joba podczas aktywacji feature:
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    SPSite site = (SPSite)properties.Feature.Parent;
    UnregisterJob(site);
    MyTimerJob job = new MyTimerJob(site.WebApplication);
    SPMinuteSchedule schedule = new SPMinuteSchedule();
    schedule.BeginSecond = 0;
    schedule.EndSecond = 59;
    schedule.Interval = 1; //w minutach 
    job.Schedule = schedule;
    job.Update();
 }
        
private void UnregisterJob(SPSite site)
{
    SPJobDefinitionCollection jobs = site.WebApplication.JobDefinitions;
    foreach (SPJobDefinition job in jobs)
    {
        if (job.Name == Globals.JobName)
            job.Delete();
    }
}
Klasa MyTimerJob
  
public class MyTimerJob : SPJobDefinition
{
    public MyTimerJob () : base() { }

    public MyTimerJob (SPWebApplication webApp)
    : base(Globals.JobName, webApp, null, SPJobLockType.ContentDatabase) 
    {
        this.Title = Globals.JobName;
    }

    public override void Execute(Guid targetInstanceId)
    {
        // Jakies czynności wykonywane przez timer job
    }
}
Namierzanie Timer jobs w centralnej administracji:
Administracja centralna -> Operacje -> Zakładka 'Konfiguracja globalna' -> Definicje zadań czasomierza oraz Stan zadań czasomierza

Debugowanie:
  1. Skopiować aktualne assembly z Timer Jobem do GAC (gacutil -if),
  2. Wykonać iisreset /noforce (lub zrestartować odpowiednią pulę aplikacji: cscript.exe "c:\windows\system32\iisapp.vbs" /a NazwaMojejPuliAplikacji /r (co trwa znacznie krócej),
  3. Aktywować funkcję (czyli feature), (Ustawienia witryny -> Funkcje zbioru witryn lub Funkcje witryny)
  4. Podłączyć się do procesu OWSTIMER.EXE (Debug -> Attach to process lub CTRL+ALT+P)
W moim przypadku czasami debugger nie chciał się przypinać i wtedy pomagał restart serwisu Windows SharePoint Services Timer.

Tags:

WSS

Zapisywanie ustawienia web parta poza EditorPart

by Piotrosz 16. June 2010
Mały przykład zapisywania ustawień WebParta w klasie Web Parta (w tym przykładzie dziedziczącej Microsoft.SharePoint.WebPartPages.WebPart). Należy sprawdzić czy użytkownik ma prawo do zapisywania swoich ustawień:
void btnSave_Click(object sender, EventArgs e)
{
    if (SPContext.Current.Web.DoesUserHavePermissions(SPBasePermissions.UpdatePersonalWebParts))
    {
        this.SomeProperty = "Some Value";
        this.SaveProperties = true;
        //SetPersonalizationDirty();
    }
}

[Personalizable(PersonalizationScope.User)]
[WebBrowsable(false)]
public string SomeProperty { get; set;}

this.SaveProperties=true; należy zastosować, gdy klasa web parta dziedziczy z ,Microsoft.SharePoint.WebPartPages.WebPart a SetPersonalizationDirty(), gdy klasa web parta dziedziczy z System.Web.UI.WebControls.WebParts.WebPart.

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen