Kullanıcı Menüsü
    • 14 Aug 2024
    • 2 Minutes to read
    • Dark
      Light

    Kullanıcı Menüsü

    • Dark
      Light

    Article summary

    Kullanıcı Menüsü

    Kullanıcı menüsü ekranın sol bölümünde kullanıcının yetkileri ile oluşur. Menü adımlarının yetkileri şu sayfadan verilir. Ekranın sol üst köşesindeki logo ve zemin renkleri şu sayfadan değiştirilebilir.

    Bu menünün altına kullanıcı kırmızı ile gösterildiği gibi kendi menü adımlarını da ekleyebilir. Kısayol ekleme ile ilgili detaylı bilgiye şu sayfadan ulaşabilirsiniz.

    Aramalar

    Yapılan kayıtlı arama sonucunda gelen ekranda arama kısayolu menüye eklenebilir.

    Belgeler

    Belgeler ekranında bulunan klasör ve dosya kartı kaydı bu menüye eklenebilir.

    Raporlar

    Herhangi bir rapor menüye eklenebilir.

    Alt Menü Adımları

    Sık kullanılan alt menü adımları menüye aynı şekilde eklenebilir.

    Menüden Silme
    Eğer daha önce kullanıcının kendi eklediği menü adımının silinmesi isteniyor ise kullanıcının ayarlar bölümünde kısa yollar sekmesi kullanılır.

    Dağıtım

    Yapılan bu eklemelerin merkezi dağıtımı mümkün değildir. Fakat veri tabanı üzerinde yapılacak bir kodlama ile bu menü adımlarının ilgili kullanıcılara dağıtılması mümkündür. Kullanıcının kendisinin oluşturduğu menü adımları PW_MENU_ITEMS isimli tabloda kullanıcının giriş adı ile yer alır. 

    Bu tablonun ilk kolonunda OWNER kolonu bulunur ve bu kolonda o menü adımını oluşturan kullanıcının LOGIN_NAME bilgisi yer alır. Eğer kaydedilen işlem bir arama ise SEARCH_ID kolonunda o aramanın numarası, eğer bir klasör veya dosya kartı ise o kaydın FOLDER_ID kolonu dolu olur. Bu tablodaki ITEM_ID kolonu bir sıra numarası içerir ve tekildir. ITEM_NAME kolonunda o menü adımına verilen isim bulunur. Bu tür eklenen tüm menü adımları PW_ITEM_CUSTOM tipindedir.

    Kullanıcının menüsüne bu satırların gelebilmesi için yetkisinin olması gerektiğini unutmayın. Örneğin oluşturulmuş menü adımı bir klasörü gösteriyor ise ve o klasörden kullanıcının yetkisi alınmış ise bu tabloda kayıt olsa dahi ara yüze ilgili menü kısa yolu gelmez.

    Aşağıdaki kod bloğunda sistemde tanımlı tüm kullanıcılar için yukarıda örnekte gösterilen “Dava Dosyaları” isimli klasör yolu kullanıcının menülerine eklenmiştir.

    DECLARE
    @LOGIN_NAME    NVARCHAR(60),
    @ITEM_ID    CHAR(16)
    
    SELECT @LOGIN_NAME=MIN(LOGIN_NAME)
    FROM PW_USER(NOLOCK)
    WHERE IS_INTERNAL='F'  --sistem kullanıcıları hariç
    AND STATE=1    --sadece aktif kullanıcılar
    
    WHILE NOT @LOGIN_NAME IS NULL
    BEGIN
        EXECUTE dbo.GETID 'MENUITEM', @ITEM_ID OUTPUT  --sıra numarası alındı
        IF NOT EXISTS(SELECT 1 FROM PW_MENU_ITEMS(NOLOCK) WHERE OWNER=@LOGIN_NAME AND FOLDER_ID='FF000100000275F6')  --daha önce eklenip eklenmediğine bak
           INSERT INTO PW_MENU_ITEMS(OWNER, ITEM_ID,PARENT_ID,ITEM_ORDER,ITEM_TYPE,ITEM_NAME,OBJECT_TYPE,IS_VISIBLE,ITEM_URL,SEARCH_ID,FOLDER_ID,XPART)
           SELECT              @LOGIN_NAME,@ITEM_ID,PARENT_ID,ITEM_ORDER,ITEM_TYPE,ITEM_NAME,OBJECT_TYPE,IS_VISIBLE,ITEM_URL,SEARCH_ID,FOLDER_ID,XPART
           FROM PW_MENU_ITEMS(NOLOCK)
           WHERE ITEM_ID='C2000300000000FA'  --Dava dosyası isimli klasör kısa yolu
    
       SELECT @LOGIN_NAME=MIN(LOGIN_NAME)
       FROM PW_USER(NOLOCK)
       WHERE IS_INTERNAL='F'  --sistem kullanıcıları hariç
       AND STATE=1  --sadece aktif kullanıcılar
       AND LOGIN_NAME>@LOGIN_NAME
    END

    Aynı işlemi geliştirme katmanı ile yapmak mümkündür. Yeni bir menü adımı oluşturmak için aşağıdaki metot kullanılır;

    var item_new = new rMenuItem(){
    ItemId = itemId,
    ParentId = parentId,
    Order = order,
    Name = name,
    ItemType = itemType,
    IsVisible = isVisible,
    ItemUrl = Url,
    SearchId = searchId,
    FolderId = folderId
    };
    a_GenericResult _retval = Current.Instance.Conn.GetProductivity().rUser.SetMenuItem(item_new);

    Eğer kullanıcının menü adımı silinmek isteniyor ise aşağıdaki metod kullanılır;

    GetProductivity().rUser.SetMenuItem(new rMenuItem() { ItemId = item.Id }, true);

    Eğer herhangi bir kullanıcının menü adımlarının sıfırlanması gerekirse aşağıdaki SQL yardımı ile sıfırlanabilir;

    DELETE 
    FROM PW_MENU_ITEMS
    WHERE OWNER='trainer'