- 14 Aug 2024
- 2 Minutes to read
- DarkLight
Kullanıcı Menüsü
- Updated on 14 Aug 2024
- 2 Minutes to read
- DarkLight
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.
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'