Dün ve bugün yönetim panelinin options alanında bulunan “edit menus” alt menüsünü oluşturmakla uğraştım. Henüz tam bitmiş değil fakat veritabanındaki alanların sayfaya yüklenmesi yani ilgili menüaltmenülerin görüntülenmesi işlemi zevkli dakikalar sonunda sona erdi. Bundan sonra görüntülenen alanların düzenlenmesi, silinmesi ve yeni alan ekleme gibi işlemlerle daha zevkli dakikar bekliyor olacak beni..
Proje dizinine giriş yapabileceğiniz “test” kullanıcısının bu alt alanı görüntüleme yetkisi bulunmadığından şimdilik sizlere bu sonucu ancak yazının sonunda bulabileceğiniz ekran görüntüsü ile hissettirebileceğim. Şimdi gelişmelerden bahsetmeye başlamalıyım.
Öncelikle admin.css betiğimize ilgili alanda sayfaya yüklenen menü ve alt menülerin alanları eklendi. Betiğe eklenen yeni alanlar aşağıdaki gibidir:
admin.css betiğine yeni eklenen alanlar:
#page-content-list-title {
margin: 0px 2px 2px 2px;
padding: 0px 0px 0px 4px;
position: relative;
width: 100%;
height: 20px;
background: #f0eeee;
font-size: 12pt;
}
#page-content-list-title-item {
margin: 0px 2px 1px 2px;
padding: 0px 0px 0px 4px;
position: relative;
float: left;
width: 200px;
font-size: 12pt;
border-bottom-style:solid;
border-bottom-width: thin;
}
#page-content-list-area {
margin: 0px 2px 4px 2px;
padding: 0px 0px 0px 4px;
position: relative;
line-height: 16px;
width: 100%;
border: none;
}
#page-content-list-area-item {
margin: 0px 2px 1px 2px;
padding: 0px 0px 0px 4px;
position: relative;
float: left;
width: 200px;
background: #d3dade;
font-size: 10pt;
}
#page-content-list-area-item2 {
margin: 0px 2px 1px 2px;
padding: 0px 0px 0px 4px;
position: relative;
float: left;
width: 200px;
background: #e3e8ea;
font-size: 10pt;
}
#page-content-list-area-item3 {
margin: 0px 2px 1px 12px;
padding: 0px 0px 0px 4px;
position: relative;
float: left;
width: 190px;
background: #ecdbc8;
font-size: 10pt;
}
#page-content-list-area-item4 {
margin: 0px 2px 1px 12px;
padding: 0px 0px 0px 4px;
position: relative;
float: left;
width: 190px;
background: #ece4dc;
font-size: 10pt;
}
#page-content-list-area-item:hover, #page-content-list-area-item2:hover {
margin: 0px 2px 1px 2px;
padding: 0px 0px 0px 4px;
position: relative;
float: left;
width: 200px;
background: #e3c8c8;
font-size: 10pt;
}
#page-content-list-area-item3:hover, #page-content-list-area-item4:hover {
margin: 0px 2px 1px 12px;
padding: 0px 0px 0px 4px;
position: relative;
float: left;
width: 190px;
background: #e3c8c8;
font-size: 10pt;
}
Bu alanlar load_admin_menu_editor() fonksiyonunda temsil edilmektedirler. Fakat bu fonksiyonun güncel halini vermeden önce en.php dil betiğimizde ilgili fonksiyonda kullandığımız yeni sabit değişkenlerimizi tanıtalım.
en.php dil betiğine eklenen yeni satırlar:
define(”_LIST_MENU_NAME”,”menu name”);
define(”_LIST_MENU_NEEDACCESS”,”need access”);
define(”_LIST_MENU_CONSTANTVALUE”,”constant value”);
define(”_LIST_MENU_RUN”,”run (for submenus)”);
define(”_LIST_ID”,”id”);
Şimdi yazımızın can alıcı ana konusu olan load_admin_menu_editor() fonksiyonunun güncel içeriğini verelim.
laod_admin_menu_editor() fonksiyonu güncel içeriği:
function load_admin_menu_editor() {
load_content_name_and_desc(_MENU_EDITOR,_MENU_EDITOR_DESC);
$list_titles = array(_LIST_ID,_LIST_MENU_NAME,_LIST_MENU_NEEDACCESS,_LIST_MENU_CONSTANTVALUE,_LIST_MENU_RUN);
load_list_title_items($list_titles);
$menu=”menu”;
$submenu=”submenu”;
$get_menus=mysql_query(”SELECT * FROM `soadminmenus` WHERE kind=’$menu’”) or die (mysql_error());
$menurows=mysql_num_rows($get_menus);
for ($i=0;$i<$menurows;$i++) {
if ($cssid==”page-content-list-area-item”) {
$cssid=”page-content-list-area-item2″;
}
else {
$cssid=”page-content-list-area-item”;
}
if ($i==0) {
$cssid=”page-content-list-area-item”;
}
$menu_id=htmlspecialchars(mysql_result($get_menus,$i,”id”));
$menu_name=htmlspecialchars(mysql_result($get_menus,$i,”name”));
$menu_needaccess=htmlspecialchars(mysql_result($get_menus,$i,”needaccess”));
$menu_constantvalue=htmlspecialchars(mysql_result($get_menus,$i,”constantvalue”));
$menu_run=htmlspecialchars(get_gzbase_value(mysql_result($get_menus,$i,”run”)));
echo”<div id=\”page-content-list-area\”>
<div id=\”$cssid\”>$menu_id</div>
<div id=\”$cssid\”>$menu_name</div>
<div id=\”$cssid\”>$menu_needaccess</div>
<div id=\”$cssid\”>$menu_constantvalue</div>
<div id=\”$cssid\”>$menu_run</div>
</div><br />
“;
$get_submenus=mysql_query(”SELECT * FROM `soadminmenus` WHERE parent=’$menu_name’”) or die (mysql_error);
$submenurows=mysql_num_rows($get_submenus);
if ($submenurows>1) {
for ($a=0;$a<$submenurows;$a++) {
if ($subcssid==”page-content-list-area-item3″) {
$subcssid=”page-content-list-area-item4″;
}
else {
$subcssid=”page-content-list-area-item3″;
}
if ($a==0) {
$subcssid=”page-content-list-area-item3″;
}
$submenu_id=htmlspecialchars(mysql_result($get_submenus,$a,”id”));
$submenu_name=htmlspecialchars(mysql_result($get_submenus,$a,”name”));
$submenu_needaccess=htmlspecialchars(mysql_result($get_submenus,$a,”needaccess”));
$submenu_constantvalue=htmlspecialchars(mysql_result($get_submenus,$a,”constantvalue”));
$submenu_run=htmlspecialchars(get_gzbase_value(mysql_result($get_submenus,$a,”run”)));
echo”<div id=\”page-content-list-area\”>
<div id=\”$subcssid\”>$submenu_id</div>
<div id=\”$subcssid\”>$submenu_name</div>
<div id=\”$subcssid\”>$submenu_needaccess</div>
<div id=\”$subcssid\”>$submenu_constantvalue</div>
<div id=\”$subcssid\”>$submenu_run</div>
</div><br />
“;
}
mysql_free_result($get_submenus);
}
}
mysql_free_result($get_menus);
}
fonksiyon biraz uzun olduğundan buradan incelemeniz zor olabilir. daha ayrıntılı incelemek istiyorsanız svn depomuzu kullanabilirsiniz.
Bütün bu gelişmelerden sonra “edit menus” alanının ekran görüntüsü şuradaki gibidir:
22 Ocak 2008 saat: 16:03
$list_titles = array(_LIST_ID,_LIST_MENU_NAME,_LIST_MENU_NEEDACCESS,_LIST_MENU_CONSTANTVALUE,_LIST_MENU_RUN);load_list_title_items($list_titles);
bu satırlarla ilgili açıklama yapmamışım. İlgili load_list_title_items() fonksiyonu admin_functions.php betiğinde kayıtlı olup, aldığı dizi değişkenindeki değerleri ayırarak tek tek sayfaya yazdırır, fonksiyonun içeriğine svn deposundan ulaşabilirsiniz.