Author |
Message |
mars
Worker


Joined: Jul 08, 2006
Posts: 123
Location: Bloomsburg,Pennsylvania
|
Posted:
Tue Aug 26, 2008 3:50 pm |
|
Not sure if anyone has done this but I rewrote the modules block to use a UL and LI tags in place of the text with BR's
The UL is classed as MainMenu with an ID for styling.
The non-link text parts are classed as nolink for styling as well.
Code:
<?php
/************************************************************************/
/* PHP-NUKE: Web Portal System */
/* =========================== */
/* */
/* Copyright (c) 2002 by Francisco Burzi */
/* http://phpnuke.org */
/* */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License. */
/************************************************************************/
/* Additional security & Abstraction layer conversion */
/* 2003 chatserv */
/* http://www.nukefixes.com -- http://www.nukeresources.com */
/************************************************************************/
if (eregi("block-Modules-li.php", $_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}
global $prefix, $db, $admin, $user;
$ThemeSel = get_theme();
if (file_exists("themes/$ThemeSel/module.php")) {
include("themes/$ThemeSel/module.php");
if (is_active("$default_module") AND file_exists("modules/$default_module/index.php")) {
$def_module = $default_module;
} else {
$def_module = "";
}
}
$row = $db->sql_fetchrow($db->sql_query("SELECT main_module FROM ".$prefix."_main"));
$main_module = $row['main_module'];
/* If the module doesn't exist, it will be removed from the database automaticaly */
$result2 = $db->sql_query("SELECT title FROM " . $prefix . "_modules");
while ($row2 = $db->sql_fetchrow($result2)) {
$title = stripslashes($row2['title']);
$a = 0;
$handle=opendir('modules');
while ($file = readdir($handle)) {
if ($file == $title) {
$a = 1;
}
}
closedir($handle);
if ($a == 0) {
$db->sql_query("DELETE FROM ".$prefix."_modules WHERE title='$title'");
}
}
/* Now we make the Modules block with the correspondent links */
$content .= "<ul id=\"MainMenu\"><li><a href=\"index.php\">"._HOME."</a></li>\n";
$result3 = $db->sql_query("SELECT * FROM " . $prefix . "_modules WHERE active='1' AND title!='$def_module' AND inmenu='1' ORDER BY custom_title ASC");
while ($row3 = $db->sql_fetchrow($result3)) {
$groups = $row3['groups'];
$m_title = stripslashes($row3['title']);
$custom_title = $row3['custom_title'];
$view = intval($row3['view']);
$m_title2 = ereg_replace("_", " ", $m_title);
if ($custom_title != "") {
$m_title2 = $custom_title;
}
if ($m_title != $main_module) {
if ($view == 0) {
$content .= "<li><a href=\"modules.php?name=$m_title\">$m_title2</a></li>\n";
} elseif (($view == 1 AND is_user($user)) OR is_admin($admin)) { //Per Mantis 0000119
$content .= "<li><a href=\"modules.php?name=$m_title\">$m_title2</a></li>\n";
} elseif ($view == 2 AND is_admin($admin)) {
$content .= "<li><a href=\"modules.php?name=$m_title\">$m_title2</a></li>\n";
} elseif (($view == 3 AND paid()) OR is_admin($admin)) { //Per Mantis 0000119
$content .= "<li><a href=\"modules.php?name=$m_title\">$m_title2</a></li>\n";
} elseif ($view > 3 AND in_groups($groups)) {
$content .= "<li><a href=\"modules.php?name=$m_title\">$m_title2</a></li>\n";
}
}
}
/* If you're Admin you and only you can see Inactive modules and test it */
/* If you copied a new module is the /modules/ directory, it will be added to the database */
if (is_admin($admin)) {
$handle=opendir('modules');
while ($file = readdir($handle)) {
if ( (!ereg("[.]",$file)) ) {
$modlist .= "$file ";
}
}
closedir($handle);
$modlist = explode(" ", $modlist);
sort($modlist);
for ($i=0; $i < sizeof($modlist); $i++) {
if($modlist[$i] != "") {
$row4 = $db->sql_fetchrow($db->sql_query("SELECT mid FROM ".$prefix."_modules WHERE title='$modlist[$i]'"));
$mid = intval($row4['mid']);
$mod_uname = ereg_replace("_", " ", $modlist[$i]);
if ($mid == "") {
$db->sql_query("INSERT INTO ".$prefix."_modules VALUES (NULL, '$modlist[$i]', '$mod_uname', '0', '0', '', '1', '0')");
}
}
}
$content .= "<li class=\"nolink\">"._INVISIBLEMODULES."</li>";
$content .= "<li class=\"nolink\">"._ACTIVEBUTNOTSEE."</li>";
$result5 = $db->sql_query("SELECT title, custom_title FROM ".$prefix."_modules WHERE active='1' AND inmenu='0' ORDER BY title ASC");
while ($row5 = $db->sql_fetchrow($result5)) {
$mn_title = stripslashes($row5['title']);
$custom_title = $row5['custom_title'];
$mn_title2 = ereg_replace("_", " ", $mn_title);
if ($custom_title != "") {
$mn_title2 = $custom_title;
}
if ($mn_title2 != "") {
$content .= "<li><a href=\"modules.php?name=$mn_title\">$mn_title2</a></li>\n";
$dummy = 1;
} else {
$a = 1;
}
}
if ($a == 1 AND $dummy != 1) {
$content .= "<li><i>"._NONE."</i></li>\n";
}
$content .= "<li class=\"nolink\">"._NOACTIVEMODULES."</li>";
$content .= "<li class=\"nolink\">"._FORADMINTESTS."</li>";
$result6 = $db->sql_query("SELECT title, custom_title FROM ".$prefix."_modules WHERE active='0' ORDER BY title ASC");
while ($row6 = $db->sql_fetchrow($result6)) {
$mn_title = stripslashes($row6['title']);
$custom_title = $row6['custom_title'];
$mn_title2 = ereg_replace("_", " ", $mn_title);
if ($custom_title != "") {
$mn_title2 = $custom_title;
}
if ($mn_title2 != "") {
$content .= "<li><a href=\"modules.php?name=$mn_title\">$mn_title2</a></li>\n";
$dummy = 1;
} else {
$a = 1;
}
}
if ($a == 1 AND $dummy != 1) {
$content .= "<li><i>"._NONE."</i></li>\n";
}
$content .="</ul>";
}
?>
|
**Edited for typo..** |
_________________ Only registered users can see links on this board! Get registered or login! |
|
|
 |
mars

|
Posted:
Tue Aug 26, 2008 4:18 pm |
|
|
|
 |
jakec
Site Admin

Joined: Feb 06, 2006
Posts: 3048
Location: United Kingdom
|
Posted:
Wed Aug 27, 2008 12:15 am |
|
Nice one Mars, it looks good.  |
|
|
|
 |
montego
Site Admin

Joined: Aug 29, 2004
Posts: 9457
Location: Arizona
|
Posted:
Wed Aug 27, 2008 7:05 am |
|
one of these days we're going to finally get to changing RN to where we have a default overall theme CSS that is loaded first so that we can make nice changes like this without completely blowing out all themes...
Thanks for sharing. Nice job. |
_________________ Only registered users can see links on this board! Get registered or login!
Only registered users can see links on this board! Get registered or login! |
|
|
 |
jestrella
Moderator

Joined: Dec 01, 2005
Posts: 593
Location: Santiago, Dominican Republic
|
Posted:
Wed Aug 27, 2008 7:41 am |
|
great, this is the direction we should be taking |
_________________ "For those whom have not reach the sky... Every mountain seems high"
Best Regards
Jonathan Estrella
http://about.me/jestrella04 |
|
|
 |
mars

|
Posted:
Wed Aug 27, 2008 9:22 am |
|
Thanks, I am actually looking at default blocks to see about converting to XHTML without tables so they don't screw with validation.
There is also a slight typo in the code above
Code:
}
$content .="</ul>";
}
?>
|
Should be
Code:
}
}
$content .="</ul>";
?>
|
|
|
|
|
 |
mars

|
Posted:
Wed Aug 27, 2008 9:22 am |
|
Oh and that theme is XHTML and will be released for free too.  |
|
|
|
 |
jestrella

|
Posted:
Wed Aug 27, 2008 6:07 pm |
|
keep rocking  |
|
|
|
 |
montego

|
Posted:
Sun Aug 31, 2008 7:13 am |
|
For the RavenNuke'ers out there, I have added in a few mods that we had made to this block file along the way, which included the removal of two PHP warnings. Enjoy!
Code:
<?php
/************************************************************************/
/* PHP-NUKE: Web Portal System */
/* =========================== */
/* */
/* Copyright (c) 2002 by Francisco Burzi */
/* http://phpnuke.org */
/* */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License. */
/************************************************************************/
/* Additional security & Abstraction layer conversion */
/* 2003 chatserv */
/* http://www.nukefixes.com -- http://www.nukeresources.com */
/************************************************************************/
/************************************************************************/
/* Additional code clean-up, performance enhancements, and W3C and */
/* XHTML compliance fixes by Raven and Montego. */
/************************************************************************/
if ( !defined('BLOCK_FILE') ) {
Header('Location: ../index.php');
die();
}
global $prefix, $db, $admin, $user, $modlist, $dummy, $default_module;
$content = '';
$ThemeSel = get_theme();
$def_module = '';
if (file_exists('themes/' . $ThemeSel . '/module.php')) {
include_once('themes/' . $ThemeSel . '/module.php');
if (is_active($default_module) AND file_exists('modules/' . $default_module . '/index.php')) {
$def_module = $default_module;
} else {
$def_module = '';
}
}
$row = $db->sql_fetchrow($db->sql_query('SELECT main_module FROM ' . $prefix . '_main'));
$main_module = $row['main_module'];
/* If the module doesn't exist, it will be removed from the database automatically */
$result2 = $db->sql_query('SELECT title FROM ' . $prefix . '_modules');
while ($row2 = $db->sql_fetchrow($result2)) {
$title = stripslashes($row2['title']);
$a = 0;
$handle = opendir('modules');
while ($file = readdir($handle)) {
if ($file == $title) {
$a = 1;
}
}
closedir($handle);
if ($a == 0) {
$db->sql_query('DELETE FROM ' . $prefix . '_modules WHERE title=\'' . $title . '\'');
}
}
/* Now we make the Modules block with the correspondent links */
$content .= '<ul id="MainMenu"><li><a href="index.php">' . _HOME . '</a></li>';
$result3 = $db->sql_query('SELECT * FROM ' . $prefix . '_modules WHERE active=\'1\' AND title!=\'' . $def_module . '\' AND inmenu=\'1\' ORDER BY custom_title ASC');
while ($row3 = $db->sql_fetchrow($result3)) {
$groups = $row3['groups'];
$m_title = stripslashes($row3['title']);
$custom_title = $row3['custom_title'];
$view = intval($row3['view']);
$m_title2 = ereg_replace('_', ' ', $m_title);
if (!empty($custom_title)) {
$m_title2 = $custom_title;
}
if ($m_title != $main_module) {
if ($view == 0) {
$content .= '<li><a href="modules.php?name=' . $m_title . '">' . $m_title2 . '</a></li>';
} elseif ($view == 1 AND ((is_user($user) AND is_group($user, $m_title)) OR is_admin($admin))) { //RN0000119, RN0000317
$content .= '<li><a href="modules.php?name=' . $m_title . '">' . $m_title2 . '</a></li>';
} elseif ($view == 2 AND is_admin($admin)) {
$content .= '<li><a href="modules.php?name=' . $m_title . '">' . $m_title2 . '</a></li>';
} elseif ($view == 3 AND (paid() OR is_admin($admin))) { //RN0000119, RN0000317
$content .= '<li><a href="modules.php?name=' . $m_title . '">' . $m_title2 . '</a></li>';
} elseif ($view > 3 AND in_groups($groups)) {
$content .= '<li><a href="modules.php?name=' . $m_title . '">' . $m_title2 . '</a></li>';
}
}
}
/* If you're Admin you and only you can see Inactive modules and test it */
/* If you copied a new module is the /modules/ directory, it will be added to the database */
if (is_admin($admin)) {
$content .= '<li class="nolink">' . _INVISIBLEMODULES . '</li>';
$content .= '<li class="nolink">' . _ACTIVEBUTNOTSEE . '</li>';
$result5 = $db->sql_query('SELECT title, custom_title FROM ' . $prefix . '_modules WHERE active=\'1\' AND inmenu=\'0\' ORDER BY title ASC');
while ($row5 = $db->sql_fetchrow($result5)) {
$mn_title = stripslashes($row5['title']);
$custom_title = $row5['custom_title'];
$mn_title2 = ereg_replace('_', ' ', $mn_title);
if (!empty($custom_title)) {
$mn_title2 = $custom_title;
}
if (!empty($mn_title2)) {
$content .= '<li><a href="modules.php?name=' . $mn_title . '">' . $mn_title2 . '</a></li>';
$dummy = 1;
} else {
$a = 1;
}
}
if ($a == 1 AND $dummy != 1) {
$content .= '<li><i>' . _NONE . '</i></li>';
}
$content .= '<li class="nolink">' . _NOACTIVEMODULES . '</li>';
$content .= '<li class="nolink">' . _FORADMINTESTS . '</li>';
$result6 = $db->sql_query('SELECT title, custom_title FROM ' . $prefix . '_modules WHERE active=\'0\' ORDER BY title ASC');
while ($row6 = $db->sql_fetchrow($result6)) {
$mn_title = stripslashes($row6['title']);
$custom_title = $row6['custom_title'];
$mn_title2 = ereg_replace('_', ' ', $mn_title);
if (!empty($custom_title)) {
$mn_title2 = $custom_title;
}
if (!empty($mn_title2)) {
$content .= '<li><a href="modules.php?name=' . $mn_title . '">' . $mn_title2 . '</a></li>';
$dummy = 1;
} else {
$a = 1;
}
}
if ($a == 1 AND $dummy != 1) {
$content .= '<li><i>' . _NONE . '</i></li>';
}
$content .= '</ul>';
}
?>
|
BTW, this is a far superior way of doing this and I'd like to add this to RN in the 2.4.0 release (not the one currently under QA testing as no new code is allowed).
One suggestion though, from an accessibility standpoint, I would not have the Invisible and Inactive titles within the same UL tags or as LI's. With a screen reader, they would be read as part of the list rather than looking like titles (which they need to). If I were to incorporate into RN, I would change that, which would also probably mean using an "ID" to style this wouldn't be my choice unless the whole thing is wrapped in a DIV? |
|
|
|
 |
mars

|
Posted:
Sun Aug 31, 2008 7:36 am |
|
I would not wrap it in a div unless it is really needed, with the side blocks, you should leave the div's to the actual blocks and not the content.
As far as the LI or not LI for the list titles, it is ok to do it this way as you are not A:LINK them so they are different from the rest.
If you want to do multiple lists you will have to do some seperate CSS so that they don't mess with each other layout wise.
Looking good though!  |
|
|
|
 |
montego

|
Posted:
Sun Aug 31, 2008 7:55 am |
|
Just remember that my statement was "for accessibility" reasons. What you have done, is perfectly fine for those who are not visually impaired and using screen readers. Just something to keep in mind... however, *nuke really sucks for those with accessibility issues! Its just not designed with these things in mind. Just trying to help raise the awareness... |
|
|
|
 |
mars

|
Posted:
Sun Aug 31, 2008 10:02 am |
|
Understood.
We just need to keep these things in mind when we do blocks and modules, it is a ton easier to do it XHTML compliant at the start than to go back later and try to fix things. |
|
|
|
 |
jestrella

|
Posted:
Sun Aug 31, 2008 11:06 pm |
|
mars wrote: | it is a ton easier to do it XHTML compliant at the start than to go back later and try to fix things. |
wise words |
|
|
|
 |
warren-the-ape
Worker


Joined: Nov 19, 2007
Posts: 196
Location: Netherlands
|
Posted:
Mon Sep 01, 2008 4:03 am |
|
I think the word you're looking for is 'semantic' not compliant. Breaks are as compliant as lists  |
|
|
|
 |
montego

|
Posted:
Mon Sep 01, 2008 1:02 pm |
|
Yeah, not even sure that "semantic" is the right word? It is definitely better structured HTML in the end, which helps with accessibility, as well as it is stylable. |
|
|
|
 |
montego

|
Posted:
Mon Sep 01, 2008 1:03 pm |
|
Actually, on second thought, "semantic" is definitely a good description for the accessibility and "well structured" part.... |
|
|
|
 |
|