adding the new control panel (3)

master
pecesama 2007-05-12 03:44:12 +00:00
parent bf9636a1eb
commit 16fdc11cb0
5 changed files with 429 additions and 175 deletions

View File

@ -19,40 +19,40 @@ $conf = new configuration();
if ($user->isAdmin()) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>gelato</title>
<title>gelato :: admin users</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="<?=$conf->urlGelato;?>/images/favicon.ico" />
<script language="javascript" type="text/javascript" src="<?=$conf->urlGelato;?>/admin/scripts/mootools.js"></script>
<script language="javascript" type="text/javascript" src="<?=$conf->urlGelato;?>/admin/scripts/sortable.js"></script>
<style type="text/css" media="screen">
@import "<?=$conf->urlGelato;?>/admin/css/style-codice.css";
@import "<?=$conf->urlGelato;?>/admin/css/style.css";
</style>
</head>
<body>
<div id="div-process" style="display:none;">Processing request...</div>
<div id="titulo">
<img src="<?=$conf->urlGelato;?>/images/logo.jpg" alt="gelato CMS" title="gelato CMS" />
</div>
<div id="menuContenedor">
<ul>
<li id="active"><a href="#" id="current">Users</a></li>
<ul>
<li><a href="user.php">Add</a></li>
<li id="subactive"><a href="#" id="subcurrent">Manage</a></li>
<div id="cont">
<div id="head">
<h1><a href="<?=$conf->urlGelato;?>/admin/index.php" title="gelato :: home">gelato cms</a></h1>
<ul id="nav">
<li><a href="<?=$conf->urlGelato;?>/" title="Take me to the tumblelog">View Tumblelog</a></li>
<li><a href="close.php" title="Log off" onclick="return exit('div-process','<?=$conf->urlGelato;?>/admin/ajax.php?action=close');">Log out</a></li>
</ul>
</div>
<div id="main">
<div class="box">
<ul class="menu manage">
<h3>Manage</h3>
<li><a href="#">Settings</a></li>
<li><a href="<?=$conf->urlGelato;?>/admin/index.php">Posts</a></li>
<li><a href="<?=$conf->urlGelato;?>/admin/user.php">Add user</a></li>
<li class="selected"><a href="#">Users</a></li>
</ul>
</li>
<li><a href="index.php">Control Panel</a></li>
</ul>
</div>
<div id="contenido">
<div class="center">
<div class="ventana">
<p class="titulo"><span class="handle">Manage the user information</span></p>
<div id="formulario">
<?
if (isset($_GET["added"])) {
if ($_GET["added"]=="true") {
@ -80,60 +80,57 @@ if ($user->isAdmin()) {
}
}
?>
<p>
<table class="sortable" id="admin-tabla">
<caption>Authors list.</caption>
<thead>
<tr>
<th scope="col">Login</th>
<th scope="col">Name</th>
<th colspan="2" scope="col" class="unsortable">Actions</th>
</tr>
</thead>
<tbody>
<?
$odd=false;
$rs = $user->getUsers();
if ($user->contarRegistros()>0) {
while($register = mysql_fetch_array($rs)) {
?>
<tr <? if ($odd) { echo 'class="odd"'; } $odd=!$odd; ?>>
<td>
<? echo $register["login"]."\n"; ?>
</td>
<td>
<? echo $register["name"]."\n"; ?>
</td>
<td>
<a href="user.php?edit=<?=$register["id_user"]; ?>">Edit</a>
</td>
<td>
<a href="user.php?delete=<?=$register["id_user"]; ?>">Delete</a>
</td>
<div class="tabla">
<table class="sortable" id="admin-table">
<thead>
<tr>
<th scope="col">Login</th>
<th scope="col">Name</th>
<th colspan="2" scope="col" class="unsortable">Actions</th>
</tr>
<?
}
}
else {
</thead>
<tbody>
<?
$odd=false;
$rs = $user->getUsers();
if ($user->contarRegistros()>0) {
while($register = mysql_fetch_array($rs)) {
?>
<tr>
<td colspan="4"><div class="exito">No users available.</div></td>
<tr <? if ($odd) { echo 'class="odd"'; } $odd=!$odd; ?>>
<td>
<? echo $register["login"]."\n"; ?>
</td>
<td>
<? echo $register["name"]."\n"; ?>
</td>
<td>
<a href="user.php?edit=<?=$register["id_user"]; ?>">Edit</a>
</td>
<td>
<a href="user.php?delete=<?=$register["id_user"]; ?>">Delete</a>
</td>
</tr>
<?
}
}
else {
?>
</tbody>
</table>
</p>
<p>&nbsp;</p>
<tr>
<td colspan="4"><div class="exito">No users available.</div></td>
</tr>
<?
}
?>
</tbody>
</table>
</div>
</div>
</div>
<div id="pie">
<p>
<a href="http://www.gelatocms.com/" title="gelato CMS" target="_blank">gelato CMS</a> :: PHP/MySQL Tumblelog Content Management System.
</p>
</div>
<div class="footer-box">&nbsp;</div>
</div>
</div>
<div id="foot">
<a href="http://www.gelatocms.com/" title="gelato CMS" target="_blank">gelato CMS</a> :: PHP/MySQL Tumblelog Content Management System.
</div>
</div>
</body>
</html>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

View File

@ -66,6 +66,7 @@ form.newpost input.txt{ background: #fff url(images/grad-small.png) top left rep
form.newpost input.btn{ }
form.newpost textarea{background: #fff url(images/grad-big.png) top left repeat-x; height:190px; border:1px solid #999; width:490px; padding:5px; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:0.8em;}
.tabla{ background-color:#FFFBFF; margin:20px 15px; }
.entry{ background-color:#efefef; border:1px solid #ccc; margin:20px 15px;}
.info{ border-bottom:1px solid #aaa; position:relative; display:block; padding:4px 10px; height:20px; }
.info p{font-size:0.8em; color:#297aab; display:inline;}
@ -88,123 +89,51 @@ form.newpost textarea{background: #fff url(images/grad-big.png) top left repeat-
#foot{ background: transparent url(images/foot_bg.png) top center no-repeat; clear: both;}
#foot { text-align:center;
font-size: 10px;
color: #000;
}
#foot { text-align:center; font-size: 10px; color: #000; }
#footer a {
color: #000;
}
#footer a { color: #000; }
#div-process {
top:0px;
padding-left: 22px;
font: normal 14.5px/17px georgia, "times new roman", serif;
background: url('../../images/proceso.gif') no-repeat 0% 10%;
float: right;
height: 20px;
width: 150px;
border: 1px solid #000066;
background-color:#FFFFCC;
color:#011940;
}
#div-process { top:0px; padding-left: 22px; font: normal 14.5px/17px georgia, "times new roman", serif; background: url('../../images/proceso.gif') no-repeat 0% 10%; float: right; height: 20px; width: 150px; border: 1px solid #000066; background-color:#FFFFCC; color:#011940; }
a.linkFrm, a.linkFrm:link, a.linkFrm:visited, a.linkFrm:active{ color:#297aab; text-decoration:none; outline:none;}
a.linkFrm:hover{ text-decoration:underline; color:#297aab; outline:none;}
/* User messages */
.error {
width:80%;
background: #FFF7F2 url('../../images/error.png') 15px center no-repeat;
border-top: 2px solid #CC0000;
border-bottom: 2px solid #CC0000;
margin: 0 auto;
padding: 5px 20px 5px 45px;
}
.exito {
width:80%;
background: #F4FBF5 url('../../images/information.png') 15px center no-repeat;
border-top: 2px solid #006600;
border-bottom: 2px solid #006600;
margin: 0 auto;
padding: 5px 20px 5px 45px;
}
.information {
width:80%;
background: #FFF6BF url('../../images/icon_info.gif') 15px center no-repeat;
border-top: 2px solid #FFD324;
border-bottom: 2px solid #FFD324;
margin: 0 auto;
padding: 5px 20px 5px 45px;
}
.error { width:80%; background: #FFF7F2 url('../../images/error.png') 15px center no-repeat; border-top: 2px solid #CC0000; border-bottom: 2px solid #CC0000; margin: 0 auto; padding: 5px 20px 5px 45px; }
.exito { width:80%; background: #F4FBF5 url('../../images/information.png') 15px center no-repeat; border-top: 2px solid #006600; border-bottom: 2px solid #006600; margin: 0 auto; padding: 5px 20px 5px 45px; }
.information { width:80%; background: #FFF6BF url('../../images/icon_info.gif') 15px center no-repeat; border-top: 2px solid #FFD324; border-bottom: 2px solid #FFD324; margin: 0 auto;padding: 5px 20px 5px 45px; }
/* Pagination */
div.pagination {
text-align:center;
padding:3px;
margin:3px;
}
div.pagination a {
padding: 2px 5px 2px 5px;
margin-right: 2px;
border: 1px solid #ddd;
text-decoration: none;
color: #aaa;
}
div.pagination a:hover, div.pagination a:active {
padding: 2px 5px 2px 5px;
margin-right: 2px;
border: 1px solid #a0a0a0;
}
div.pagination span.current {
padding: 2px 5px 2px 5px;
margin-right: 2px;
border: 1px solid #e0e0e0;
font-weight: bold;
background-color: #f0f0f0;
color: #aaa;
}
div.pagination span.disabled {
padding: 2px 5px 2px 5px;
margin-right: 2px;
border: 1px solid #f3f3f3;
color: #ccc;
}
div.pagination { text-align:center; padding:3px; margin:3px; }
div.pagination a { padding: 2px 5px 2px 5px; margin-right: 2px; border: 1px solid #ddd; text-decoration: none; color: #aaa; }
div.pagination a:hover, div.pagination a:active { padding: 2px 5px 2px 5px; margin-right: 2px; border: 1px solid #a0a0a0; }
div.pagination span.current { padding: 2px 5px 2px 5px; margin-right: 2px; border: 1px solid #e0e0e0; font-weight: bold; background-color: #f0f0f0; color: #aaa; }
div.pagination span.disabled { padding: 2px 5px 2px 5px; margin-right: 2px; border: 1px solid #f3f3f3; color: #ccc; }
/* Conversation Post */
div.conversation ul {
list-style-type: none;
margin: 0px;
padding: 0px 0px 0px 1px;
border-left: solid 5px #555;
}
div.conversation ul li {
font-size: 12px;
padding: 4px 0px 4px 8px;
color: #000;
margin-bottom: 1px;
}
div.conversation ul { list-style-type: none; margin: 0px; padding: 0px 0px 0px 1px; border-left: solid 5px #555; }
div.conversation ul li { font-size: 12px; padding: 4px 0px 4px 8px; color: #000; margin-bottom: 1px; }
div.conversation ul li span.label { font-weight: bold; }
div.conversation ul li.odd { background-color: #f4f4f4; }
div.conversation ul li.even { background-color: #e8e8e8; }
div.conversation ul li span.label {
font-weight: bold;
}
/* Tables design */
div.conversation ul li.odd {
background-color: #f4f4f4;
}
div.conversation ul li.even {
background-color: #e8e8e8;
}
#admin-table { width:535px; margin:0 auto; padding:0;}
table { padding: 0; width:70%; margin: 0 auto; border-collapse: collapse; color: #333; background: #F3F5F7; }
table a {color: #3A4856; text-decoration: none; border-bottom: 1px solid #C6C8CB; }
table img { border:0px; }
table a:visited {color: #777; text-decoration: none; }
table a:hover {color: #000; text-decoration: none; }
table caption {text-align: left; text-transform: uppercase; padding-bottom: 10px; }
table thead th {background: #BDD3E7; padding: 15px 10px; color: #fff; text-align: left; font-weight: normal; }
table tbody, table thead {border-left: 1px solid #EAECEE; border-right: 1px solid #EAECEE; }
table tbody {border-bottom: 1px solid #EAECEE; }
table tbody td, table tbody th {padding: 10px; background: url('images/td_back.gif') repeat-x; text-align: left; }
table tbody tr {background: #F3F5F7; }
table tbody tr.odd {background: #F0F2F4; }
table tbody tr:hover {background: #EAECEE; color: #111; }
table tfoot td, table tfoot th, table tfoot tr {text-align: left; background: #fff; padding: 10px; }

328
admin/scripts/sortable.js Normal file
View File

@ -0,0 +1,328 @@
/*
Table sorting script by Joost de Valk, check it out at http://www.joostdevalk.nl/code/sortable-table/.
Based on a script from http://www.kryogenix.org/code/browser/sorttable/.
Distributed under the MIT license: http://www.kryogenix.org/code/browser/licence.html .
Copyright (c) 1997-2006 Stuart Langridge, Joost de Valk.
Version 1.5.6
*/
/* You can change these values */
var image_path = "http://www.joostdevalk.nl/code/sortable-table/";
var image_up = "arrow-up.gif";
var image_down = "arrow-down.gif";
var image_none = "arrow-none.gif";
var europeandate = true;
var alternate_row_colors = true;
/* Don't change anything below this unless you know what you're doing */
addEvent(window, "load", sortables_init);
var SORT_COLUMN_INDEX;
var thead = false;
function sortables_init() {
// Find all tables with class sortable and make them sortable
if (!document.getElementsByTagName) return;
tbls = document.getElementsByTagName("table");
for (ti=0;ti<tbls.length;ti++) {
thisTbl = tbls[ti];
if (((' '+thisTbl.className+' ').indexOf("sortable") != -1) && (thisTbl.id)) {
ts_makeSortable(thisTbl);
}
}
}
function ts_makeSortable(t) {
if (t.rows && t.rows.length > 0) {
if (t.tHead && t.tHead.rows.length > 0) {
var firstRow = t.tHead.rows[t.tHead.rows.length-1];
thead = true;
} else {
var firstRow = t.rows[0];
}
}
if (!firstRow) return;
// We have a first row: assume it's the header, and make its contents clickable links
for (var i=0;i<firstRow.cells.length;i++) {
var cell = firstRow.cells[i];
var txt = ts_getInnerText(cell);
if (cell.className != "unsortable" && cell.className.indexOf("unsortable") == -1) {
cell.innerHTML = '<a href="#" class="sortheader" onclick="ts_resortTable(this, '+i+');return false;">'+txt+'<span class="sortarrow">&nbsp;&nbsp;<img src="'+ image_path + image_none + '" alt="&darr;"/></span></a>';
}
}
if (alternate_row_colors) {
alternate(t);
}
}
function ts_getInnerText(el) {
if (typeof el == "string") return el;
if (typeof el == "undefined") { return el };
if (el.innerText) return el.innerText; //Not needed but it is faster
var str = "";
var cs = el.childNodes;
var l = cs.length;
for (var i = 0; i < l; i++) {
switch (cs[i].nodeType) {
case 1: //ELEMENT_NODE
str += ts_getInnerText(cs[i]);
break;
case 3: //TEXT_NODE
str += cs[i].nodeValue;
break;
}
}
return str;
}
function ts_resortTable(lnk, clid) {
var span;
for (var ci=0;ci<lnk.childNodes.length;ci++) {
if (lnk.childNodes[ci].tagName && lnk.childNodes[ci].tagName.toLowerCase() == 'span') span = lnk.childNodes[ci];
}
var spantext = ts_getInnerText(span);
var td = lnk.parentNode;
var column = clid || td.cellIndex;
var t = getParent(td,'TABLE');
// Work out a type for the column
if (t.rows.length <= 1) return;
var itm = "";
var i = 1;
while (itm == "") {
var itm = ts_getInnerText(t.tBodies[0].rows[i].cells[column]);
itm = trim(itm);
if (itm.substr(0,4) == "<!--" || itm.length == 0) {
itm = "";
}
i++;
}
sortfn = ts_sort_caseinsensitive;
if (itm.match(/^\d\d[\/\.-][a-zA-z][a-zA-Z][a-zA-Z][\/\.-]\d\d\d\d$/)) sortfn = ts_sort_date;
if (itm.match(/^\d\d[\/\.-]\d\d[\/\.-]\d\d\d{2}?$/)) sortfn = ts_sort_date;
if (itm.match(/^-?[£$€Û¢´]\d/)) sortfn = ts_sort_numeric;
if (itm.match(/^-?(\d+[,\.]?)+(E[-+][\d]+)?%?$/)) sortfn = ts_sort_numeric;
SORT_COLUMN_INDEX = column;
var firstRow = new Array();
var newRows = new Array();
for (k=0;k<t.tBodies.length;k++) {
for (i=0;i<t.tBodies[k].rows[0].length;i++) {
firstRow[i] = t.tBodies[k].rows[0][i];
}
}
for (k=0;k<t.tBodies.length;k++) {
if (!thead) {
// Skip the first row
for (j=1;j<t.tBodies[k].rows.length;j++) {
newRows[j-1] = t.tBodies[k].rows[j];
}
} else {
// Do NOT skip the first row
for (j=0;j<t.tBodies[k].rows.length;j++) {
newRows[j] = t.tBodies[k].rows[j];
}
}
}
newRows.sort(sortfn);
if (span.getAttribute("sortdir") == 'down') {
ARROW = '&nbsp;&nbsp;<img src="'+ image_path + image_down + '" alt="&darr;"/>';
newRows.reverse();
span.setAttribute('sortdir','up');
} else {
ARROW = '&nbsp;&nbsp;<img src="'+ image_path + image_up + '" alt="&uarr;"/>';
span.setAttribute('sortdir','down');
}
// We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
// don't do sortbottom rows
for (i=0; i<newRows.length; i++) {
if (!newRows[i].className || (newRows[i].className && (newRows[i].className.indexOf('sortbottom') == -1))) {
t.tBodies[0].appendChild(newRows[i]);
}
}
// do sortbottom rows only
for (i=0; i<newRows.length; i++) {
if (newRows[i].className && (newRows[i].className.indexOf('sortbottom') != -1))
t.tBodies[0].appendChild(newRows[i]);
}
// Delete any other arrows there may be showing
var allspans = document.getElementsByTagName("span");
for (var ci=0;ci<allspans.length;ci++) {
if (allspans[ci].className == 'sortarrow') {
if (getParent(allspans[ci],"table") == getParent(lnk,"table")) { // in the same table as us?
allspans[ci].innerHTML = '&nbsp;&nbsp;<img src="'+ image_path + image_none + '" alt="&darr;"/>';
}
}
}
span.innerHTML = ARROW;
alternate(t);
}
function getParent(el, pTagName) {
if (el == null) {
return null;
} else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase()) {
return el;
} else {
return getParent(el.parentNode, pTagName);
}
}
function sort_date(date) {
// y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
dt = "00000000";
if (date.length == 11) {
mtstr = date.substr(3,3);
mtstr = mtstr.toLowerCase();
switch(mtstr) {
case "jan": var mt = "01"; break;
case "feb": var mt = "02"; break;
case "mar": var mt = "03"; break;
case "apr": var mt = "04"; break;
case "may": var mt = "05"; break;
case "jun": var mt = "06"; break;
case "jul": var mt = "07"; break;
case "aug": var mt = "08"; break;
case "sep": var mt = "09"; break;
case "oct": var mt = "10"; break;
case "nov": var mt = "11"; break;
case "dec": var mt = "12"; break;
// default: var mt = "00";
}
dt = date.substr(7,4)+mt+date.substr(0,2);
return dt;
} else if (date.length == 10) {
if (europeandate == false) {
dt = date.substr(6,4)+date.substr(0,2)+date.substr(3,2);
return dt;
} else {
dt = date.substr(6,4)+date.substr(3,2)+date.substr(0,2);
return dt;
}
} else if (date.length == 8) {
yr = date.substr(6,2);
if (parseInt(yr) < 50) {
yr = '20'+yr;
} else {
yr = '19'+yr;
}
if (europeandate == true) {
dt = yr+date.substr(3,2)+date.substr(0,2);
return dt;
} else {
dt = yr+date.substr(0,2)+date.substr(3,2);
return dt;
}
}
return dt;
}
function ts_sort_date(a,b) {
dt1 = sort_date(ts_getInnerText(a.cells[SORT_COLUMN_INDEX]));
dt2 = sort_date(ts_getInnerText(b.cells[SORT_COLUMN_INDEX]));
if (dt1==dt2) {
return 0;
}
if (dt1<dt2) {
return -1;
}
return 1;
}
function ts_sort_numeric(a,b) {
var aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
aa = clean_num(aa);
var bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
bb = clean_num(bb);
return compare_numeric(aa,bb);
}
function compare_numeric(a,b) {
var a = parseFloat(a);
a = (isNaN(a) ? 0 : a);
var b = parseFloat(b);
b = (isNaN(b) ? 0 : b);
return a - b;
}
function ts_sort_caseinsensitive(a,b) {
aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]).toLowerCase();
bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]).toLowerCase();
if (aa==bb) {
return 0;
}
if (aa<bb) {
return -1;
}
return 1;
}
function ts_sort_default(a,b) {
aa = ts_getInnerText(a.cells[SORT_COLUMN_INDEX]);
bb = ts_getInnerText(b.cells[SORT_COLUMN_INDEX]);
if (aa==bb) {
return 0;
}
if (aa<bb) {
return -1;
}
return 1;
}
function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+, NS6 and Mozilla
// By Scott Andrew
{
if (elm.addEventListener){
elm.addEventListener(evType, fn, useCapture);
return true;
} else if (elm.attachEvent){
var r = elm.attachEvent("on"+evType, fn);
return r;
} else {
alert("Handler could not be removed");
}
}
function clean_num(str) {
str = str.replace(new RegExp(/[^-?0-9.]/g),"");
return str;
}
function trim(s) {
while (s.substring(0,1) == ' ') {
s = s.substring(1,s.length);
}
while (s.substring(s.length-1,s.length) == ' ') {
s = s.substring(0,s.length-1);
}
return s;
}
function alternate(table) {
// Take object table and get all it's tbodies.
var tableBodies = table.getElementsByTagName("tbody");
// Loop through these tbodies
for (var i = 0; i < tableBodies.length; i++) {
// Take the tbody, and get all it's rows
var tableRows = tableBodies[i].getElementsByTagName("tr");
// Loop through these rows
// Start at 1 because we want to leave the heading row untouched
for (var j = 0; j < tableRows.length; j++) {
// Check if j is even, and apply classes for both possible results
if ( (j % 2) == 0 ) {
if ( !(tableRows[j].className.indexOf('odd') == -1) ) {
tableRows[j].className = tableRows[j].className.replace('odd', 'even');
} else {
if ( tableRows[j].className.indexOf('even') == -1 ) {
tableRows[j].className += " even";
}
}
} else {
if ( !(tableRows[j].className.indexOf('even') == -1) ) {
tableRows[j].className = tableRows[j].className.replace('even', 'odd');
} else {
if ( tableRows[j].className.indexOf('odd') == -1 ) {
tableRows[j].className += " odd";
}
}
}
}
}
}